C#取PSD完整的高度和宽度 不使用psSDK和System.Drawing
时间: 2024-02-27 22:52:28 浏览: 210
System.Drawing.PSD-master.zip_HIX_System.Drawing.PSD_c# psd to j
5星 · 资源好评率100%
如果不使用psSDK和System.Drawing命名空间,你可以手动解析PSD文件格式来获取完整的高度和宽度,包括所有图层的高度和宽度。具体步骤如下:
1. 使用FileStream类打开PSD文件,例如:
```
FileStream fs = new FileStream("example.psd", FileMode.Open, FileAccess.Read);
```
2. 读取文件头信息,即文件类型、版本号、颜色模式等信息。PSD文件头的长度为26个字节,其中第13、14字节为宽度的值,第15、16字节为高度的值,采用大端字节序存储,因此需要进行转换,例如:
```
byte[] header = new byte[26];
fs.Read(header, 0, 26);
int width = (header[13] << 8) | header[14];
int height = (header[15] << 8) | header[16];
```
3. 读取PSD文件的资源块,找到图层信息块。资源块的起始位置在文件头的后面,长度为4个字节的签名(8BPS)、4个字节的版本号、2个字节的保留字段和4个字节的资源数据长度,资源数据长度为后面所有资源块数据的总长度。图层信息块的类型为8BIM,ID为0x4D42,长度为4个字节的数据(4个字节为图层信息块中所有数据的总长度),其中包括每个图层的信息,例如图层名称、可见性、位置、大小等。具体读取方法可以参考PSD文件格式的相关资料。
4. 解析每个图层的信息,获取图层的高度和宽度,例如:
```
int layerWidth = ...; // 从图层信息中获取图层宽度
int layerHeight = ...; // 从图层信息中获取图层高度
```
5. 计算PSD文件的完整高度和宽度,例如:
```
int totalWidth = Math.Max(width, layerWidth);
int totalHeight = Math.Max(height, layerHeight);
```
注意:PSD文件格式比较复杂,解析过程也比较繁琐,建议使用专业的PSD解析库来处理。
阅读全文