2016-05-24 18 views
-1

Hallo Ich möchte komprimiertes Bild in Ordner komprimieren und speichern. Also habe ich den folgenden Code verwendet:Wie komprimiere ich Bild und speichern Sie in bestimmten Ordner mit OpenCV Java

import java.io.*; 
import java.util.*; 
import java.awt.image.*; 

import javax.imageio.*; 
import javax.imageio.stream.ImageOutputStream; 

public class Compression { 

    public static void main(String[] args) throws IOException { 

     String dc = "C:\\Users\\admin\\Desktop\\RFI\\DC\\1_1_c.jpg"; 
     String dr = "C:\\Users\\admin\\Desktop\\RFI\\DR"; 

     File file = new File(dc); 
     BufferedImage image = ImageIO.read(file); 
     OutputStream os =new FileOutputStream(new File(dr)); 
     Iterator<ImageWriter>writers = ImageIO.getImageWritersByFormatName("jpg"); 
     ImageWriter writer = (ImageWriter) writers.next(); 

     ImageOutputStream ios = ImageIO.createImageOutputStream(os); 
     writer.setOutput(ios); 

     ImageWriteParam param = writer.getDefaultWriteParam(); 

     param.setCompressionMode(ImageWriteParam.MODE_EXPLICIT); 
     param.setCompressionQuality(0.05f); 
     writer.write(null, new IIOImage(image, null, null), param); 

     os.close(); 
     ios.close(); 
     writer.dispose(); 
    } 
} 

Aber ich bekomme kein komprimiertes Bild. Nur bekommen die folgenden Fehler auf Konsole

Exception in thread "main" javax.imageio.IIOException: Can't read input file! 
    at javax.imageio.ImageIO.read(ImageIO.java:1301) 
    at com.opencv.Compression.main(Compression.java:18) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:483) 
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:144) 

Bitte empfehlen Sie mir eine Idee ....

Antwort

1

Dies ist ein Kommentar mehr als eine Antwort verdienen würde, aber da mein Ruf so niedrig ist, kann ich nicht kommentieren und Ich bin gezwungen, es als Antwort zu schreiben.

Haben Sie versucht, den Fehler zu verstehen, den Sie bekommen? Der Call-Stack ist ziemlich klar. Sie haben einen Fehler in der Zeile BufferedImage image = ImageIO.read(file);. Das Programm kann Ihr Bild nicht finden. Haben Sie sichergestellt, dass die in String dc = "C:\\Users\\admin\\Desktop\\RFI\\DC\\1_1_c.jpg"; angegebene Bilddatei tatsächlich existiert?

+0

Entschuldigung. Du bist jetzt richtig, es funktioniert. Danke @Sunreef – Sangeetha

+0

Gern geschehen. – Sunreef