Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/345.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
基于java的图像RLE压缩解压缩_Java_Run Length Encoding - Fatal编程技术网

基于java的图像RLE压缩解压缩

基于java的图像RLE压缩解压缩,java,run-length-encoding,Java,Run Length Encoding,我们正在使用java进行图像压缩解压缩项目。我们已经使用base64编码器对图像进行了编码,而不是应用下面的代码。但此java代码不适用于图像。它适用于字符字符串,但不适用于图像 StringBuffer dest = new StringBuffer(); for (int i = 0; i < source.length(); i++) { int runLength = 1; while (i + 1 < source.length()

我们正在使用java进行图像压缩解压缩项目。我们已经使用base64编码器对图像进行了编码,而不是应用下面的代码。但此java代码不适用于图像。它适用于字符字符串,但不适用于图像

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();
StringBuffer dest=new StringBuffer();
对于(int i=0;i
您正在将图像转换为字符串,它应该是字节

你在找这样的东西吗

公共字节[]字节数组(BuffereImage图像){
ByteArrayOutputStream bas=新的ByteArrayOutputStream();
字节[]imageInByte=null;
试一试{
图像IO.write(图像“BMP”,baos);
paos.flush();
imageInByte=baos.toByteArray();
baos.close();
}捕获(IOE异常){
System.out.println(e.getMessage());
}
返回图像字节;
}
公共字符串getRunLength(){
StringBuffer dest=新的StringBuffer();
for(int i=0;i
代码不起作用不是有效问题。向我们展示迄今为止您在图像压缩方面所做的尝试。您不能期望使用字符串的代码在不进行更改的情况下用于图像。另请参见。在答案中添加一些描述。
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();
}