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(); 
		}
	}

完成!!! 开发

相关文章
相关标签/搜索