#!/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
昨日アクセスの多かった掲示板スレッドランキングです。話題のスレッドを見に行こう!
- テンプレ/診断共有会 6 - 初音ミクwiki掲示板wiki
- wiki民連絡用スレ - 初音ミクwiki掲示板wiki
- 今日のおやつ・夜食を10点満点で評価していくスレ - 初音ミクwiki掲示板wiki
- ▸王様ゲーム¹² - 初音ミクwiki掲示板wiki
- スレ民プロフィール!!! - 初音ミクwiki掲示板wiki
- 75 - 初音ミクwiki掲示板wiki
- 依頼された物をみんなで描くスレ - 初音ミクwiki掲示板wiki
- VOCALOIDになってものがたり作りましょ - 初音ミク Wiki
- ボカロなりきりスレ - 初音ミク Wiki
- みんなのプロゼミ歴教えて! - 5代目プロゼミュニティ【非公式】
急上昇Wikiランキング
急上昇中のWikiランキングです。今注目を集めている話題をチェックしてみよう!
最近作成されたWikiのアクセスランキングです。見るだけでなく加筆してみよう!
atwikiでよく見られているWikiのランキングです。新しい情報を発見してみよう!