为了账号安全,请及时绑定邮箱和手机立即绑定

从 PostScript (CIP3) 文件中提取位图

从 PostScript (CIP3) 文件中提取位图

C#
莫回无 2023-08-13 14:02:53
我正在处理 CIP3 文件,这些文件基本上是带有一些附加项目的 PostScript 文件。这里重要的是:图像矩阵图像宽度/高度图像数据图像数据是 RLE 编码数据 - 我已经从几个月前提出的问题中获得了解码 RLE 的代码。该代码有效,我在我拥有的一些示例文件上进行了测试。然而,看看这个表:我只在情况 1 和 2 上工作。但是,当涉及到&ldquo;从右到左&rdquo;或&ldquo;从下到上&rdquo;阅读时,我无法让它工作。我尝试过:LINQ 的 Reverse() 函数 - 仍然产生无效图像使用常规 for 循环反转字节数组 - 无效图像还在解码后反转文件 - 无效图像在解码前反转字节数组 - 无效图像这是解码 RLE 图像的代码:class RLEDecompressor{    public byte[] rleDecompressed { get; private set; }    public RLEDecompressor(byte[] byteFile)    {        List<byte> final = new List<byte>();        int i = 0;        while (i < byteFile.Length)        {            try            {                var lengthByte = byteFile[i++]; //First run, position 1                if (lengthByte <= 127)                {                    int currLen = lengthByte + 1;                    for (int j = 0; j < currLen; j++)                        final.Add(byteFile[i++]);                }                else                {                    int currLen = 257 - lengthByte;                    byte byteToCopy = byteFile[i++];                    for (int j = 0; j < currLen; j++)                        final.Add(byteToCopy);                }            }            catch (Exception ex)            {                rleDecompressed = final.ToArray();                break;            }        }        rleDecompressed = final.ToArray();            }我期望输出是有效的图像。然而,我得到的所有输出都是模糊的图像或&ldquo;其他东西&rdquo;(不是有效的图像)。图像宽度:2061图片高度:1571频道:1如果一切都正确解码,则可以在 Photoshop 中查看图像(只需使用扩展名 .raw 保存)。预先感谢您的任何意见。
查看完整描述

1 回答

?
SMILET

TA贡献1796条经验 获得超4个赞

您的“图像宽度”和“图像高度”值似乎互换了。可以使用以下设置将解码后的数据作为“原始图像数据”读入 Gimp:

  • 图像类型:索引

  • 偏移量:0

  • 宽度:1571

  • 身高:2016年

  • 调色板类型:R、G、B(普通)

  • 调色板偏移:0

  • 调色板文件:无


查看完整回答
反对 回复 2023-08-13
  • 1 回答
  • 0 关注
  • 70 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信