2009-10-13 14 views
57

क्या पूरी फाइल पढ़ने के बिना किसी छवि के आयाम प्राप्त करने का कोई तरीका है?जावा/छविियो पूरी फ़ाइल पढ़ने के बिना छवि आयाम प्राप्त कर रहा है?

URL url=new URL(<BIG_IMAGE_URL>); 
BufferedImage img=ImageIO.read(url); 
System.out.println(img.getWidth()+" "+img.getHeight()); 
img=null; 
+0

आप छवि सामग्री को छोटा करने का प्रयास करें, बस एक छोटा सा हिस्सा गुजर था, कहते हैं कि 10kb, छवि के ImageIO.read करने के लिए sfussenegger के लिए? – Mohsen

+0

संभावित डुप्लिकेट [जावा का उपयोग करके छवि ऊंचाई और चौड़ाई कैसे प्राप्त करें?] (Http://stackoverflow.com/questions/672916/how-to-get-image-height-and-width-using-java) – ripper234

उत्तर

104
try(ImageInputStream in = ImageIO.createImageInputStream(resourceFile)){ 
    final Iterator<ImageReader> readers = ImageIO.getImageReaders(in); 
    if (readers.hasNext()) { 
     ImageReader reader = readers.next(); 
     try { 
      reader.setInput(in); 
      return new Dimension(reader.getWidth(0), reader.getHeight(0)); 
     } finally { 
      reader.dispose(); 
     } 
    } 
} 

धन्यवाद सुझाव

+3

बहुत बढ़िया। .. आपके कोड ने मुझे सही काम किया। मैंने कोड के दो जोड़े की कोशिश की, लेकिन उन कोड कुछ उपयोग मामलों में विफल रहे हैं। आपने मेरा समय बचाया ... धन्यवाद। – vissu

+1

प्रस्तुत कोड ग्रहण में एक चेतावनी जारी करता है: Iterator एक कच्चा प्रकार है। सामान्य प्रकार Iterator के संदर्भ पैरामीटरकृत किया जाना चाहिए। ग्रहण द्वारा प्रदान किए गए उपाय विकल्प: फ़ाइल में नाम बदलें (Ctrl + 2, R सीधी पहुंच), 'इटरेटर' में टाइप पैरामीटर जोड़ें, जेनेरिक टाइप तर्कों को इनफर करें ..., @SuppressWarnings 'अनचेक' को 'methodNameHere' में जोड़ें। इसके लिए वाक्य रचनात्मक रूप से सही फिक्स क्या है? – David

+1

इसके अलावा कोड स्निपेट कोड का उपयोग करने के लिए आवश्यक वर्ग संदर्भों का उल्लेख नहीं करता है। ग्रहण से, ऐसा लगता है: आयात javax.imageio.ImageIO; आयात javax.imageio.ImageReader; आयात javax.imageio.stream.ImageInputStream; – David

1

आपको ImageReader.getImageMetadata() में देखना होगा। दुर्भाग्यवश, जावा छवि एपीआई का उपयोग करना आसान नहीं है।

आप javax.imageio.metadata के पैकेज दस्तावेज़ में मेटाडाटा स्वरूपों के विवरण पा सकते हैं।

तीसरे पक्ष के पुस्तकालय हैं जिनका उपयोग करना आसान है, जैसे MediaUtil (अंतिम 3 साल पहले अपडेट किया गया था, लेकिन यह मेरे लिए अच्छा काम करता था)।

15

ImageReader.getHeight(int) और ImageReader.getWidth(int) का उपयोग आमतौर पर केवल छवि शीर्षलेख पढ़ता है (मैं जेडीके 6 स्रोतों को देख रहा हूं)। तो ImageReader सबसे अधिक संभावना सबसे अच्छा विकल्प है।

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