【问题标题】:RLE compression decompression for image using java使用java对图像进行RLE压缩解压
【发布时间】:2017-03-15 18:02:37
【问题描述】:
我们正在使用 java 进行图像压缩解压缩项目。我们已经使用 base64 编码器对图像进行了编码,然后应用了下面的代码。但是这个 java 代码不适用于图像。它适用于 char 字符串,但不适用于图像。
StringBuffer dest = new StringBuffer();
for (int i = 0; i < source.length(); i++)
{
int runLength = 1;
while (i + 1 < source.length() && source.charAt(i) == source.charAt(i + 1))
{
runLength++;
i++;
}
dest.append(runLength);
dest.append(source.charAt(i));
}
return dest.toString();
【问题讨论】:
-
code is not working 不是一个有效的问题。向我们展示您迄今为止为图像压缩所做的尝试。您不能指望使用字符串的代码在不进行更改的情况下为图像工作。另请参阅How to Ask。
标签:
java
run-length-encoding
【解决方案2】:
public byte[] byteArray(BufferedImage image){
ByteArrayOutputStream baos = new ByteArrayOutputStream();
byte[] imageInByte = null;
try{
ImageIO.write(image, "BMP", baos);
baos.flush();
imageInByte = baos.toByteArray();
baos.close();
}catch(IOException e){
System.out.println(e.getMessage());
}
return imageInByte;
}
public String getRunLength(){
StringBuffer dest = new StringBuffer();
for(int i =0; i < imageByteArray.length; i++){
int runlength = 1;
while(i+1 < imageByteArray.length && imageByteArray[i] == imageByteArray[i+1]){
runlength++;
i++;
}
dest.append(runlength);
dest.append(imageByteArray[i]);
}
return dest.toString();
}