【问题标题】: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


【解决方案1】:

您正在将图像转换为字符串,它应该是字节

你正在寻找这样的东西

Java - Convert image to Base64

【讨论】:

    【解决方案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();
    }
    

    【讨论】:

    • 为您的答案添加一些描述。
    猜你喜欢
    • 1970-01-01
    • 2019-08-06
    • 1970-01-01
    • 1970-01-01
    • 2014-04-22
    • 1970-01-01
    • 2013-08-07
    • 2011-07-25
    • 1970-01-01
    相关资源
    最近更新 更多