#!/usr/bin/env python # -*- coding: utf8 -*- import sys, re, struct from pdflib.pdfparser import PDFDocument, PDFParser, PDFStream, \ PDFObjRef, PSKeyword, PSLiteral class MakeTiffFile: tags={} def __init__(self,data=None): self.data=data self.tags[0x00fe]=[4,1,0] def addTag(self,tagid,valuetype,count,value): self.tags.add(tagid,(valuetype,count,value)) def __makeIFD(self): if(len(self.tags.keys())<0xffff): ret=struct.pack("H",len(self.tags.keys())) for tag in self.tags.keys(): ret+=struct.pack("H",tag) ret+=struct.pack("H",self.tags[tag][0]) ret+=struct.pack("I",self.tags[tag][1]) ret+=struct.pack("I",self.tags[tag][2]) ret+=struct.pack("I",0) return ret else: offset=8 ikeys=self.tags.keys() ret='' for i in range((len(ikeys)/0xffff)+1): if(len(ikeys[0xffff*i:])>0xffff): ret+=struct.pack("H",0xffff) for tag in ikeys[i*0xffff:i+0xffff]: ret+=struct.pack("H",tag) ret+=struct.pack("H",self.tags[tag][0]) ret+=struct.pack("I",self.tags[tag][1]) ret+=struct.pack("I",self.tags[tag][2]) offset+=2+0xffff*12+4 ret+=struct.pack("I",offset) else: ret+=struct.pack("H",len(ikeys[ioffset:])) for tag in ikeys[i*0xffff:]: ret+=struct.pack("H",tag) ret+=struct.pack("H",self.tags[tag][0]) ret+=struct.pack("I",self.tags[tag][1]) ret+=struct.pack("I",self.tags[tag][2]) ret+=struct.pack("I",0) return ret def __makeHeader(self): if(struct.pack("<I",1000)==struct.pack("=I",1000)): ret=struct.pack("2HI",0x4949,42,8) else: ret=struct.pack("2HI",0x4D4D,42,8) ret+=self.__makeIFD() return ret def setPhotometricInterpretation(self,flag): """A bilevel image contains two colors—black and white. TIFF allows an application to write out bilevel data in either a white-is-zero or black-is-zero format. The field that records this information is called PhotometricInterpretation. 0:White is Zero 1:Black is Zero """ if(flag==0 or flag==1): self.addTag(262,3,1,flag) def setCompression(self,value): """Data can be stored either compressed or uncompressed.""" self.addTag(259,3,1,value) def setImageLength(self,value): self.addTag(257,4,1,value) def setImageWidth(self,value): self.addTag(256,4,1,value) def setResolutionUnit(self,value): """1= No absolute unit of measurement. Used for images that may have a non-square aspect ratio but no meaningful absolute dimensions. 2= Inch. 3= Centimeter. Default = 2 (inch). """ self.addTag(296,3,1,value) def setXResolution(self,value): self.addTag(282,5,1,value) def setYResolution(self,value): self.addTag(283,5,1,value) class ReadTiffTag: def getTags(self,filename): tiff=file(filename,"rb") tags={} buf=tiff.read(2) endian="@" if(buf=="II"): endian="<" else: endian=">" buf=tiff.read(2) buf=tiff.read(4) while(True): tiff.seek(int(struct.unpack(endian+"I",buf)[0])) buf=tiff.read(2) for i in range(struct.unpack(endian+"H",buf)[0]): buf=tiff.read(2) tag=struct.unpack(endian+"H",buf)[0] tags[tag]=[ struct.unpack(endian+"H",tiff.read(2))[0], struct.unpack(endian+"I",tiff.read(4))[0], struct.unpack(endian+"H",tiff.read(2))[0], struct.unpack(endian+"H",tiff.read(2))[0] ] buf=tiff.read(4) if(struct.unpack(endian+"I",buf)[0]==0): break return tags
急上昇Wikiランキング
急上昇中のWikiランキングです。今注目を集めている話題をチェックしてみよう!
最近作成されたWikiのアクセスランキングです。見るだけでなく加筆してみよう!
atwikiでよく見られているWikiのランキングです。新しい情報を発見してみよう!
最近アクセスの多かったページランキングです。話題のページを見に行こう!
- MOZU - ストグラ まとめ @ウィキ
- hantasma - ストグラ まとめ @ウィキ
- キミトスギャング(仮称) - ストグラ まとめ @ウィキ
- ヴァン ダーマー - ストグラ まとめ @ウィキ
- アドミゲス・ハン - ストグラ まとめ @ウィキ
- ダブルオーライザー - 機動戦士ガンダム バトルオペレーション2攻略Wiki 3rd Season
- 参加者一覧 - ストグラ まとめ @ウィキ
- 大冒険 セントエルモスの奇跡(ゲーム) - アニヲタWiki(仮)
- ヤケモン一覧(チャンピオンズ) - 役割論理専用wiki
- ダブルオーライザー/ログ1 - 機動戦士ガンダム バトルオペレーション2攻略Wiki 3rd Season