PSD格式文件的读取

该段代码展示了如何使用C++读取并解析PSD文件,包括检查文件签名,读取宽度、高度、通道数,解压缩数据并将其复制到位图中。主要涉及RLE压缩类型的处理。
摘要由CSDN通过智能技术生成
HRESULT LoadPSD( LPSTR strFilename ) // 读取PSD文件
  {
    DWORD dwWidth, dwHeight;
// 宽高

    long lSurfWidth = m_Rect.right - m_Rect.left;
    long lSurfHeight = m_Rect.bottom - m_Rect.top;
    WORD CompressionType;
// 压缩类型

    HDC hDC;
    FILE *fpPSD;
    WORD ChannelCount;
// 通道数


    // 打开PSD文件
    if ( ( fpPSD = fopen ( strFilename, "rb" ) ) == NULL ) {
      return E_FAIL;
    }

    // 头四个字节为"8BPS"
    char signature[5];
    signature[0] = fgetc( fpPSD );
    signature[1] = fgetc( fpPSD );
    signature[2] = fgetc( fpPSD );
    signature[3] = fgetc( fpPSD );
    signature[4] = '/0';
    if ( strcmp( signature,"8BPS" ) != 0 ) {
      return E_FAIL;
    }

    // 版本必须为1
    if ( Read16( fpPSD ) != 1 ) {
      return E_FAIL;
    }

    // 跳过一些数据 (总是0)
    Read32( fpPSD );
    Read16( fpPSD );

    // 读取通道数
    ChannelCount = Read16( fpPSD );

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值