要想經過文件流的形式來解析psd文件,首先要了解psd的文件格式, html
adobe的開發者文檔裏面有着很詳細的說明: 程序員
http://www.adobe.com/devnet-apps/photoshop/fileformatashtml/ app
首先,整體來講是分爲5個主要部分,每一個部分都佔據着必定的長度,以後會逐個部分的講述。 spa
這裏先講一下文件頭File Header,這部分包含了整個文件的基礎信息,包括版本號,圖片的透明通道數,psd內容的寬,高,深度以及色彩模式等。 code
佔用字節數1: Boolean,Byte,UnsignedByte (由於是以byte爲單位存取,所要Boolean也佔用一個字節)
佔用字節數2: Short,UnsignedShort
佔用字節數4: Int,Float,UnsignedInt
佔用字節數8: Double
Unsigned 表示無符號類型,僅表示正數, 不然爲有符號,可表示正負數.
orm
這裏是基於Windows平臺操做的,因此psd的數據存儲格式是以big endian的形式! htm
看到這裏,相信大部分程序員都已經知道該怎麼把上面的信息給弄出來了,因此直接上解析代碼,這裏我用的是AS3的代碼: 圖片
public final class PsdHeader { public var signature:String; //標誌 8BPS public var version:int; //版本 public var reserve:*; //預留 public var channel:int; //通道 public var height:int; //高度 public var width:int; //寬度 public var depth:int;//深度 public var mode:int; //模式 rgb..... etc.... public function parse(ba:FileStream):void { var tempBa:ByteArray = new ByteArray(); signature = ba.readUTFBytes(4); version = ba.readShort(); ba.readBytes(tempBa, 0, 6); channel = ba.readShort(); height = ba.readInt(); width = ba.readInt(); depth = ba.readShort(); mode = ba.readShort(); } }
完成!!! 開發