PSD解析工具实现(二)

本秂侑毒 提交于 2020-03-02 04:04:44

要想通过文件流的形式来解析psd文件,首先要了解psd的文件格式,

adobe的开发者文档里面有着很详细的说明: 

http://www.adobe.com/devnet-apps/photoshop/fileformatashtml/

首先,总体来说是分为5个主要部分,每个部分都占据着一定的长度,之后会逐个部分的讲述。

  

这里先讲一下文件头File Header,这部分包含了整个文件的基础信息,包括版本号,图片的透明通道数,psd内容的宽,高,深度以及色彩模式等。


占用字节数1: Boolean,Byte,UnsignedByte (因为是以byte为单位存取,所要Boolean也占用一个字节)
占用字节数2: Short,UnsignedShort
占用字节数4: Int,Float,UnsignedInt
占用字节数8: Double
Unsigned 表示无符号类型,仅表示正数, 否则为有符号,可表示正负数. 

这里是基于Windows平台操作的,所以psd的数据存储格式是以big endian的形式!

看到这里,相信大部分程序员都已经知道该怎么把上面的信息给弄出来了,所以直接上解析代码,这里我用的是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(); 
		}
	}

完成!!!



标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!