2013-06-19 25 views
7

Java kodumda byte[] dizisi biçiminde bir resim var. Bu diziden aşağıdaki bilgilerin çıkarılmasını istiyorum. Bunu olabildiğince hızlı yapabilirim.Görüntünün genişliğini, yüksekliğini, rengini ve türünü bayt dizisinden ayıkla

  • Genişliği
  • Yükseklik
  • Renk (siyah & beyaz, renkli veya şeffaf? Renk, ana renk buysa?)
  • Tip (görüntü PNG, GIF, JPEG, vb mi
+1

Bayt dizinizdeki bit bit işlemleri ile bu tür bilgilerin ayıklanması büyük bir görevdir. Bunun için kütüphane kullanırdım. – Simon

+0

Bir çeşit resim (belki ImageIO'yu kullanarak) oluşturup görüntü özelliklerini ayıklayın – MadProgrammer

+0

@Simon Kitaplığı kullanırken herhangi bir sorunum yok. –

cevap

9

ImageIO'yu, arabelleğe alınmış görüntü olarak okumak ve sonra istediğiniz ilgili şeyleri almak için kullanın. Java belgesini http://docs.oracle.com/javase/6/docs/api/javax/imageio/ImageIO.html numaralı telefondan görebilirsiniz. Farklı dosyalar için var çıkışını İşte

byte[] picture = new byte[30]; 
ImageInputStream iis = ImageIO.createImageInputStream(new ByteArrayInputStream(picture)); 

Iterator<ImageReader> readers = ImageIO.getImageReaders(iis); 
while (readers.hasNext()) { 
    ImageReader read = readers.next(); 
    System.out.println("format name = " + read.getFormatName()); 
} 

edilir:

format name = png 
format name = JPEG 
format name = gif 

It

import java.awt.image.BufferedImage; 
import java.io.ByteArrayInputStream; 
import java.io.IOException; 
import java.io.InputStream; 

import javax.imageio.ImageIO; 


public class Test { 

    /** 
    * @param args 
    * @throws IOException 
    */ 
    public static void main(String[] args) throws IOException { 
     // assuming that picture is your byte array 
     byte[] picture = new byte[30]; 

     InputStream in = new ByteArrayInputStream(picture); 

     BufferedImage buf = ImageIO.read(in); 
     ColorModel model = buf.getColorModel(); 
     int height = buf.getHeight(); 

    } 

} 
+0

Lütfen bana bir kod snippet'i verebilir misiniz? Bunu gerçekten takdir ediyorum. –

+0

Özellikle renk kısmı için. –

+0

Düzenleme için teşekkürler. Renk bilgisi nasıl? BufferedImage ile mümkün mü? Teşekkürler. –

İlgili konular