2014-07-24 4 views
6

मैं टीआईएफ/टीआईएफएफ छवियों को जेपीजी में परिवर्तित करने की कोशिश कर रहा हूं जो ठीक काम करता है लेकिन कुछ टीआईएफ छवियों के लिए मुझे एक अवैध आरेखण प्राप्त हो रहा है: खराब अंतहीनता टैग (0x4949 या 0x4d4d नहीं)।टीआईएफ/टीआईएफएफ को जेपीजी में कनवर्ट करें: खराब एंडियननेस टैग

अपवाद:

java.io.IOException: Bad endianness tag (not 0x4949 or 0x4d4d). 
    at com.sun.media.jai.codecimpl.CodecUtils.toIOException(CodecUtils.java:76) 
    at com.sun.media.jai.codecimpl.TIFFImageDecoder.getNumPages(TIFFImageDecoder.java:98) 
    at com.sun.media.jai.codecimpl.TIFFImageDecoder.decodeAsRenderedImage(TIFFImageDecoder.java:103) 
    at com.sun.media.jai.codec.ImageDecoderImpl.decodeAsRenderedImage(ImageDecoderImpl.java:140) 
    at com.pkg.jae.utils.GenericImageUtils.convertTiffToJpg(GenericImageUtils.java:35) 
    at com.pkg.jae.utils.GenericImageUtils.main(GenericImageUtils.java:92) 
Caused by: java.lang.IllegalArgumentException: Bad endianness tag (not 0x4949 or 0x4d4d). 
    at com.sun.media.jai.codec.TIFFDirectory.getNumDirectories(TIFFDirectory.java:595) 
    at com.sun.media.jai.codecimpl.TIFFImageDecoder.getNumPages(TIFFImageDecoder.java:96) 
    ... 4 more 

कोड फंक्शन:

public static void convertTiffToJpg(String strTiffUrl,String strJpgFileDestinationUrl) throws Exception { 
     try { 
      FileSeekableStream obj_FileSeekableStream = new FileSeekableStream(new File(strTiffUrl)); 
      ImageDecoder obj_ImageDecoder = ImageCodec.createImageDecoder(EXT_TIFFX, obj_FileSeekableStream, null); 
      RenderedImage obj_RenderedImage = obj_ImageDecoder.decodeAsRenderedImage(); 
      JAI.create("filestore", obj_RenderedImage,strJpgFileDestinationUrl, EXT_JEPGX); 
      obj_RenderedImage = null; 
      obj_ImageDecoder = null; 
      obj_FileSeekableStream.close(); 
     } catch (Exception ex) { 
      throw ex; 
     } 
    } 

किसी को भी इस मुद्दे को जानता है और इस में मदद कर सकते हैं।

+2

एक हेक्स संपादक के साथ टीआईएफएफ फ़ाइल का निरीक्षण करें। पहले 4 बाइट्स क्या हैं? – usr2564301

+0

मैंने हेक्स संपादक में छवि का निरीक्षण किया। मुझे कुछ ऐसा लगता है, एफएफ डी 8 एफएफ ई0 00 10 4 ए 46 ... –

+5

इसका मतलब है कि जब आप टीआईएफएफ फ़ाइल की अपेक्षा करते हैं तो आप इसे एक जेपीईजी फाइल पास कर रहे हैं। – BitBank

उत्तर

0

रूप bitbank द्वारा एक टिप्पणी में कहा गया है, यह आप इसे करने के लिए एक JPEG फ़ाइल गुजर रहे हैं जब यह एक TIFF फ़ाइल प्राप्त करने की उम्मीद है।

0

Startlingly, इस जय

RenderedOp renderer = JAI.create("fileload", filename); 
BufferedImage bi = renderer.getAsBufferedImage(); 

एक ही विफलता नहीं है और सिर्फ छवि की परवाह किए बिना काम करता है "तरह।" इस विशेष विधि (फ़ाइल नाम में गुजर) यद्यपि का उपयोग न करें, Is JAI closing file handles too early?

0

मैं इस मुद्दे था और यह पता चला सामने के अंत की समस्या हो देखते हैं। हां, मैं गलत फ़ाइल प्रकार अपलोड करने की कोशिश कर रहा था, लेकिन मुझे सही हैंडलिंग और एक दयालु पॉपअप संदेश अलर्ट की उम्मीद थी। इसके बजाय मुझे आपके द्वारा वर्णित त्रुटि मिल रही थी।

मेरे मामले में, मैं ExtJS उपयोग कर रहा था और मैं इस तरह एक विफलता समारोह था:

failure: function (a) { 
...some message alert... 
} 
बजाय

:

failure: function (f, a) { 
...some message alert... 
} 

और यह है कि अपवाद फेंक दिया गया था, बजाय मेरे संदेश प्रदर्शित चेतावनी।

संबंधित मुद्दे