Java使用数组2D到1D压缩图像?

时间:2014-04-06 17:03:25

标签: java arrays image compression run-length-encoding

我遇到了我的任务问题。我有一个读取PGM图像文件的类。 我需要创建一些类,主要是压缩类。我需要将PGM(由2D数组表示)压缩成一维数组。

以下是说明:

public static short[] compress(short[][]) 
  • 传递代表图像的2D短裤阵列。
  • 将压缩图像作为1D短裤数组返回。
  • 该方法是我主要考虑的问题

压缩理念:

  • 查找类似像素值的水平或垂直运行并记录其次数 像素值重复自身。
  • Spektre的说明:例如,PCX使用的这种称为 RLE游程长度编码

算法:

1.使用水平运行计算压缩图像阵列

2.使用垂直运行计算压缩图像数组

3.选择压缩图像使用此特定图像的最佳技术。

4.设置图像标题

  • 将short []结果数组的第一个和第二个值设置为width和height值。
  • 将short []结果数组中的第三个值设置为1表示水平,2表示垂直压缩。

5.设置图像主体

  • short []结果数组的其余部分填充了RLE数量和值

还有一些其他方法

  • 如果有人想帮助他们:

    public static void write(short[], String) 
    
  • 传递一维短裤数组,表示压缩图像和所需文件名。

  • 只需将值写入文本文件,并将.compressed扩展名添加到文件名中。

    public static short[] read(String) 
    
  • 传递压缩的图像文件名。

  • 只需读取值并将其返回到1D短裤阵列中。

    public static short[][] decompress(short[]) 
    
  • 传递一个代表压缩图像的1D短裤阵列。

  • 只需解压缩文件,以便我们可以在屏幕上显示
  • 使用我们已有的showGrayImage()代码。

提前致谢!

0 个答案:

没有答案