文档章节

PSD解析工具实现(二)

小姚
 小姚
发布于 2016/03/23 21:21
字数 391
阅读 544
收藏 0

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

完成!!!



© 著作权归作者所有

小姚
粉丝 30
博文 135
码字总数 41380
作品 0
广州
程序员
私信 提问
PSD解析工具实现(一)

包括做游戏,我们做程序的很多时候都是需要跟psd打交道,那么如何对psd这个东西进行程序化操作就成为了我们提高工作效率的手段。 相信有研究过psd脚本的人都知道,psd的脚本是用js写的,大体...

小姚
2016/03/23
1K
0
PSD.rb

PSD.rb 是一个使用Ruby编写的通用的PhotoShop文档解析器,该工具允许你以一种易管理的树结构方式来处理Photoshop文档,从而找出文档中的重要数据,如: 文档结构 文件大小 图层/目录大小和配...

tsl0922
2013/09/07
841
0
数据可视化开发

可提供PSD源文件给开发者 【业务需求】 一、功能需求 前端: 1.实现如图所示的效果,整体风格、色调基本一致(主页面和二级页面,但不局限于1个二级页面)。 2.所有文字不能做成图片,有效果...

无锡一棵树
2017/05/26
22
0
Python的PSD解析库--pypsd

pypsd 是 Python 实现的 PSD 文件解析库,目前还没有完全完成,但已经可用。

小编辑
2012/04/18
1K
0
用jmagick能实现psd文件的解析或者图层替换么?

用java和jmagick如何实现psd文件的解析?

shirley8798
2014/04/28
423
0

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周六乱弹 —— 如果是个帅小伙你愿意和他出去吗

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 小小编辑推荐:《Ghost 》游戏《死亡搁浅》原声 《Ghost 》游戏(《死亡搁浅》原声) - Au/Ra / Alan Walker 手机党少年们想听歌,请使劲儿戳...

小小编辑
55分钟前
98
5
java通过ServerSocket与Socket实现通信

首先说一下ServerSocket与Socket. 1.ServerSocket ServerSocket是用来监听客户端Socket连接的类,如果没有连接会一直处于等待状态. ServetSocket有三个构造方法: (1) ServerSocket(int port);...

Blueeeeeee
今天
6
0
用 Sphinx 搭建博客时,如何自定义插件?

之前有不少同学看过我的个人博客(http://python-online.cn),也根据我写的教程完成了自己个人站点的搭建。 点此:使用 Python 30分钟 教你快速搭建一个博客 为防有的同学不清楚 Sphinx ,这...

王炳明
昨天
5
0
黑客之道-40本书籍助你快速入门黑客技术免费下载

场景 黑客是一个中文词语,皆源自英文hacker,随着灰鸽子的出现,灰鸽子成为了很多假借黑客名义控制他人电脑的黑客技术,于是出现了“骇客”与"黑客"分家。2012年电影频道节目中心出品的电影...

badaoliumang
昨天
16
0
很遗憾,没有一篇文章能讲清楚线程的生命周期!

(手机横屏看源码更方便) 注:java源码分析部分如无特殊说明均基于 java8 版本。 简介 大家都知道线程是有生命周期,但是彤哥可以认真负责地告诉你网上几乎没有一篇文章讲得是完全正确的。 ...

彤哥读源码
昨天
19
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部