首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >读取Photoshop (PSD)文件的RLE压缩层

读取Photoshop (PSD)文件的RLE压缩层
EN

Stack Overflow用户
提问于 2011-07-02 06:08:20
回答 1查看 1.1K关注 0票数 0

我的基础是the official PSD File Format documentation

我可以很好地读取原始数据,而且我的文件都没有ZIP压缩。我所需要的就是让RLE的东西正常工作。

现在,我对解压缩信息不感兴趣。我只想把它读入并以压缩的形式存储在内存中。我将在稍后处理解压的问题。

我要做的就是计算RLE数据的大小,并逐个通道地批量读取它。这是我用来计算通道数据大小的函数:

使用ActionScript 3.0编写

代码语言:javascript
复制
////////////////////////////////////////////////////////////////////
// Compute RLE Data Size
////////////////////////////////////////////////////////////////////
protected function _computeRLESize( data_ : ByteArray, record_ : PSDLayerRecord ) : int
{
    var numScanlines : int;
    var ii : int;
    var size : int;
    var totalSize : int;
    var pad : int;

    // Compute our total time
    totalSize = ( record_.bottom - record_.top ) * ( record_.right - record_.left );

    // Find our number of scanlines
    numScanlines = record_.bottom - record_.top;

    // Initialize our size
    size = 0;

    // Loop through each line to see how many bytes we have
    trace( "Num Scanlines: " + numScanlines );
    for ( ii = 0; ii < numScanlines; ii++ )
    {
        pad = data_.readShort();
        if ( pad % 2 != 0 ) pad++;
        size += pad;
    }

    // Output our compression
    trace( "Image is at " + size + " / " + totalSize + " compression" );

    // When we're done, back up to the beginning so we can read it
    data_.position -= numScanlines * 2;

    // Return our size
    return size + numScanlines * 2;
}

我已经让其他四个专业的程序员一起研究了这段代码和官方文档,他们都没有发现它有任何问题。

谢谢你的帮助。

EN

回答 1

Stack Overflow用户

发布于 2011-11-17 11:50:01

您是否只想知道通道像素数据大小(关于RLE或原始压缩)?你可以从图层记录中的通道信息中获取大小。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6553675

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档