要想经过文件流的形式来解析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(); } }
完成!!! 开发