PSD解析工具實現(二)

要想經過文件流的形式來解析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(); 
		}
	}

完成!!! 開發

相關文章
相關標籤/搜索