File input = new File(file);
int cont = 0;
BufferedImage image = ImageIO.read(input);
BufferedImage decompressedimg = new BufferedImage(image.getWidth() / 2, image.getHeight(), BufferedImage.TYPE_INT_RGB);
//filling matrix compressed image
//decompressing image
int aux = (image.getWidth() / 2) - 1;
for (int i = 0; i < image.getHeight(); i++) {
for (int j = 0; j < image.getWidth() - 1; j++) {
if (j % 2 == 0 && cont < aux) {
int num_rep = image.getRGB(j, i) * -1;
int pixel = image.getRGB(j + 1, i);
for (int x = 0; x < num_rep && cont < aux; x++) {
decompressedimg.setRGB(cont, i, pixel);
//System.out.println(cont);
cont++;
}
}
}
}
try {
File outputfile2 = new File("test.bmp");
ImageIO.write(decompressedimg, "bmp", outputfile2);
} catch (IOException ex) {
System.out.print(cont);
Logger.getLogger(RLE.class.getName()).log(Level.SEVERE, null, ex);
}
preciso de uma ajudinha pessoal isto supostamente deveria descomprimir uma imagem so que cria uma imagem toda preta nao sei porque nem consigo entender.
o metodo de compressao é o seguinte
[code]
public void compress2(BufferedImage img) {
int[][] matrix = new int[img.getWidth()][img.getHeight()];
int cpheight = img.getHeight();
int cpwight = img.getWidth() * 2;
BufferedImage compressedimg = new BufferedImage(cpwight, cpheight, BufferedImage.TYPE_INT_RGB);
for (int i = 0; i < img.getHeight(); i++) {
for (int j = 0; j < img.getWidth(); j++) {
matrix[j][i] = img.getRGB(j, i);
//System.out.print(" "+matrix[j][i]);
}
}
try {
for (int j = 0; j < img.getHeight(); j++) {
int count = -1;
int current = 0;
int next = 0;
int index = 0;
for (int i = 0; i < img.getWidth() - 1; i++) {
// System.out.print(" "+matrix[0][j]);
current = matrix[i][j];
next = matrix[i + 1][j];
if (current != next) {
compressedimg.setRGB(index, j, count);
compressedimg.setRGB(index + 1, j, current);
index = index + 2;
count = -1;
} else {
count--;
}
}
//
}
System.out.println();
File outputfile = new File("saved2.bmp");
ImageIO.write(compressedimg, "bmp", outputfile);
} catch (IOException ex) {
Logger.getLogger(RLE.class.getName()).log(Level.SEVERE, null, ex);
}[/code]
o metodo é o RLE agora porfavor me digam porque nao guarda uma imagem com pixeis e guarda tudo preto