基于java的图像RLE压缩解压缩
我们正在使用java进行图像压缩解压缩项目。我们已经使用base64编码器对图像进行了编码,而不是应用下面的代码。但此java代码不适用于图像。它适用于字符字符串,但不适用于图像基于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()
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();
}