2016-08-08 29 views
0

Ich brauche die Bildgröße MB KB zu reduzieren, ohne die Bildqualität loosibng, so dass ich folgen Sie diesem Link decrease image resolution in javaBildgröße MB KB reduzieren java

Aber es throw Fehler s

Error: One factory fails for the operation "jpeg" 
    Occurs in: javax.media.jai.ThreadSafeOperationRegistry 
    java.lang.reflect.InvocationTargetException 
     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:497) 
     at javax.media.jai.FactoryCache.invoke(FactoryCache.java:130) 
     at javax.media.jai.OperationRegistry.invokeFactory(OperationRegistry.java:1682) 
     at javax.media.jai.ThreadSafeOperationRegistry.invokeFactory(ThreadSafeOperationRegistry.java:481) 
     at javax.media.jai.registry.RIFRegistry.create(RIFRegistry.java:340) 
     at com.sun.media.jai.opimage.StreamRIF.create(StreamRIF.java:110) 
     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:497) 
     at javax.media.jai.FactoryCache.invoke(FactoryCache.java:130) 
     at javax.media.jai.OperationRegistry.invokeFactory(OperationRegistry.java:1682) 
     at javax.media.jai.ThreadSafeOperationRegistry.invokeFactory(ThreadSafeOperationRegistry.java:481) 
     at javax.media.jai.registry.RIFRegistry.create(RIFRegistry.java:340) 
     at javax.media.jai.RenderedOp.createInstance(RenderedOp.java:830) 
     at javax.media.jai.RenderedOp.createRendering(RenderedOp.java:878) 
     at javax.media.jai.RenderedOp.getRendering(RenderedOp.java:899) 
     at ImageCompressor.compress(ImageCompressor.java:31) 
     at ImageCompressor.main(ImageCompressor.java:46) 
    Caused by: java.lang.NoClassDefFoundError: com/sun/image/codec/jpeg/ImageFormatException 
     at com.sun.media.jai.codecimpl.JPEGImageDecoder.decodeAsRenderedImage(JPEGImageDecoder.java:53) 
     at com.sun.media.jai.opimage.CodecRIFUtil.create(CodecRIFUtil.java:96) 
     at com.sun.media.jai.opimage.JPEGRIF.create(JPEGRIF.java:52) 
     ... 22 more 
    Caused by: java.lang.ClassNotFoundException: com.sun.image.codec.jpeg.ImageFormatException 
     at java.net.URLClassLoader.findClass(URLClassLoader.java:381) 
     at java.lang.ClassLoader.loadClass(ClassLoader.java:424) 
     at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331) 
     at java.lang.ClassLoader.loadClass(ClassLoader.java:357) 
     ... 25 more 
    Error: One factory fails for the operation "stream" 
    Occurs in: javax.media.jai.ThreadSafeOperationRegistry 
    java.lang.reflect.InvocationTargetException 
     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:497) 
     at javax.media.jai.FactoryCache.invoke(FactoryCache.java:130) 
     at javax.media.jai.OperationRegistry.invokeFactory(OperationRegistry.java:1682) 
     at javax.media.jai.ThreadSafeOperationRegistry.invokeFactory(ThreadSafeOperationRegistry.java:481) 
     at javax.media.jai.registry.RIFRegistry.create(RIFRegistry.java:340) 
     at javax.media.jai.RenderedOp.createInstance(RenderedOp.java:830) 
     at javax.media.jai.RenderedOp.createRendering(RenderedOp.java:878) 
     at javax.media.jai.RenderedOp.getRendering(RenderedOp.java:899) 
     at ImageCompressor.compress(ImageCompressor.java:31) 
     at ImageCompressor.main(ImageCompressor.java:46) 
    Caused by: javax.media.jai.util.ImagingException: All factories fail for the operation "jpeg" 
     at javax.media.jai.OperationRegistry.invokeFactory(OperationRegistry.java:1695) 
     at javax.media.jai.ThreadSafeOperationRegistry.invokeFactory(ThreadSafeOperationRegistry.java:481) 
     at javax.media.jai.registry.RIFRegistry.create(RIFRegistry.java:340) 
     at com.sun.media.jai.opimage.StreamRIF.create(StreamRIF.java:110) 
     ... 13 more 
    Caused by: java.lang.reflect.InvocationTargetException 
     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:497) 
     at javax.media.jai.FactoryCache.invoke(FactoryCache.java:130) 
     at javax.media.jai.OperationRegistry.invokeFactory(OperationRegistry.java:1682) 
     ... 16 more 
    Caused by: java.lang.NoClassDefFoundError: com/sun/image/codec/jpeg/ImageFormatException 
     at com.sun.media.jai.codecimpl.JPEGImageDecoder.decodeAsRenderedImage(JPEGImageDecoder.java:53) 
     at com.sun.media.jai.opimage.CodecRIFUtil.create(CodecRIFUtil.java:96) 
     at com.sun.media.jai.opimage.JPEGRIF.create(JPEGRIF.java:52) 
     ... 22 more 
    Caused by: java.lang.ClassNotFoundException: com.sun.image.codec.jpeg.ImageFormatException 
     at java.net.URLClassLoader.findClass(URLClassLoader.java:381) 
     at java.lang.ClassLoader.loadClass(ClassLoader.java:424) 
     at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331) 
     at java.lang.ClassLoader.loadClass(ClassLoader.java:357) 
     ... 25 more 
    Exception in thread "main" javax.media.jai.util.ImagingException: All factories fail for the operation "stream" 
     at javax.media.jai.OperationRegistry.invokeFactory(OperationRegistry.java:1695) 
     at javax.media.jai.ThreadSafeOperationRegistry.invokeFactory(ThreadSafeOperationRegistry.java:481) 
     at javax.media.jai.registry.RIFRegistry.create(RIFRegistry.java:340) 
     at javax.media.jai.RenderedOp.createInstance(RenderedOp.java:830) 
     at javax.media.jai.RenderedOp.createRendering(RenderedOp.java:878) 
     at javax.media.jai.RenderedOp.getRendering(RenderedOp.java:899) 
     at ImageCompressor.compress(ImageCompressor.java:31) 
     at ImageCompressor.main(ImageCompressor.java:46) 
    Caused by: java.lang.reflect.InvocationTargetException 
     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:497) 
     at javax.media.jai.FactoryCache.invoke(FactoryCache.java:130) 
     at javax.media.jai.OperationRegistry.invokeFactory(OperationRegistry.java:1682) 
     ... 7 more 
    Caused by: javax.media.jai.util.ImagingException: All factories fail for the operation "jpeg" 
     at javax.media.jai.OperationRegistry.invokeFactory(OperationRegistry.java:1695) 
     at javax.media.jai.ThreadSafeOperationRegistry.invokeFactory(ThreadSafeOperationRegistry.java:481) 
     at javax.media.jai.registry.RIFRegistry.create(RIFRegistry.java:340) 
     at com.sun.media.jai.opimage.StreamRIF.create(StreamRIF.java:110) 
     ... 13 more 
    Caused by: java.lang.reflect.InvocationTargetException 
     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:497) 
     at javax.media.jai.FactoryCache.invoke(FactoryCache.java:130) 
     at javax.media.jai.OperationRegistry.invokeFactory(OperationRegistry.java:1682) 
     ... 16 more 
    Caused by: java.lang.NoClassDefFoundError: com/sun/image/codec/jpeg/ImageFormatException 
     at com.sun.media.jai.codecimpl.JPEGImageDecoder.decodeAsRenderedImage(JPEGImageDecoder.java:53) 
     at com.sun.media.jai.opimage.CodecRIFUtil.create(CodecRIFUtil.java:96) 
     at com.sun.media.jai.opimage.JPEGRIF.create(JPEGRIF.java:52) 
     ... 22 more 
    Caused by: java.lang.ClassNotFoundException: com.sun.image.codec.jpeg.ImageFormatException 
     at java.net.URLClassLoader.findClass(URLClassLoader.java:381) 
     at java.lang.ClassLoader.loadClass(ClassLoader.java:424) 
     at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331) 
     at java.lang.ClassLoader.loadClass(ClassLoader.java:357) 
     ... 25 more 
    Caused by: 
    java.lang.reflect.InvocationTargetException 
     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:497) 
     at javax.media.jai.FactoryCache.invoke(FactoryCache.java:130) 
     at javax.media.jai.OperationRegistry.invokeFactory(OperationRegistry.java:1682) 
     at javax.media.jai.ThreadSafeOperationRegistry.invokeFactory(ThreadSafeOperationRegistry.java:481) 
     at javax.media.jai.registry.RIFRegistry.create(RIFRegistry.java:340) 
     at javax.media.jai.RenderedOp.createInstance(RenderedOp.java:830) 
     at javax.media.jai.RenderedOp.createRendering(RenderedOp.java:878) 
     at javax.media.jai.RenderedOp.getRendering(RenderedOp.java:899) 
     at ImageCompressor.compress(ImageCompressor.java:31) 
     at ImageCompressor.main(ImageCompressor.java:46) 
    Caused by: javax.media.jai.util.ImagingException: All factories fail for the operation "jpeg" 
     at javax.media.jai.OperationRegistry.invokeFactory(OperationRegistry.java:1695) 
     at javax.media.jai.ThreadSafeOperationRegistry.invokeFactory(ThreadSafeOperationRegistry.java:481) 
     at javax.media.jai.registry.RIFRegistry.create(RIFRegistry.java:340) 
     at com.sun.media.jai.opimage.StreamRIF.create(StreamRIF.java:110) 
     ... 13 more 
    Caused by: java.lang.reflect.InvocationTargetException 
     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:497) 
     at javax.media.jai.FactoryCache.invoke(FactoryCache.java:130) 
     at javax.media.jai.OperationRegistry.invokeFactory(OperationRegistry.java:1682) 
     ... 16 more 
    Caused by: java.lang.NoClassDefFoundError: com/sun/image/codec/jpeg/ImageFormatException 
     at com.sun.media.jai.codecimpl.JPEGImageDecoder.decodeAsRenderedImage(JPEGImageDecoder.java:53) 
     at com.sun.media.jai.opimage.CodecRIFUtil.create(CodecRIFUtil.java:96) 
     at com.sun.media.jai.opimage.JPEGRIF.create(JPEGRIF.java:52) 
     ... 22 more 
    Caused by: java.lang.ClassNotFoundException: com.sun.image.codec.jpeg.ImageFormatException 
     at java.net.URLClassLoader.findClass(URLClassLoader.java:381) 
     at java.lang.ClassLoader.loadClass(ClassLoader.java:424) 
     at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331) 
     at java.lang.ClassLoader.loadClass(ClassLoader.java:357) 
     ... 25 more 

I hinzugefügt jai_codec.jar, jai_core.jar, mlibwrapper_jai.jar.

Java-Version: java-1.8.0-openjdk-1.8.0.71

os: Filzhut 23.

vorschlagen mich Wie toi dieses Problem zu lösen.

+0

"ohne loosibng Bildqualität, so folge ich diesem Link Bildauflösung in Java verringern" Das ist widersprüchlich. Wenn Sie die Auflösung verringern, verlieren Sie Informationen und damit "Qualität". – Fildor

+0

@Fildor OK, schlage mir eine bessere Möglichkeit vor, die Bildgröße zu reduzieren (Mb zu Kb), ohne die Bildqualität mit Java zu reduzieren. –

+2

Das ist unmöglich! – Fildor

Antwort

1

Allgemein:

Wie erwarten Sie Größe zu reduzieren, ohne die Bildqualität zu verlieren? Kleinere Bilder haben weniger Pixel, so dass sie nicht alle Informationen des größeren Bildes liefern können. Daher muss die Qualität mit der Größe abnehmen (im Allgemeinen).

Wenn Sie so viel Bildqualität wie möglich behalten möchten, sollten Sie auch JPG nicht wählen, da die Idee von JPG darin besteht, Informationen zu komprimieren, die nicht so wichtig sind. PNG oder sogar GIF (GIF ist nur für maximal 256 Farben) sind verlustfreie Komprimierung, aber in den meisten Fällen schrumpft die Dateigröße nicht so stark wie bei JPG.

Um Ihr Problem:

öffnen JDK scheint Probleme mit JPG-Komprimierung zu haben. Daher ist es meine Empfehlung, zum Oracle JDK zu wechseln.