PSD解析工具实现(二)

要想通过文件流的形式来解析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(); 
		}
	}

完成!!!



转载于:https://my.oschina.net/u/185335/blog/646245

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值