2013-06-19 20 views
7

Javaコードにbyte[]の形式の画像があります。私はその配列から以下の情報を抽出します。私はできるだけ早くそれをやり遂げることができます。バイト配列から画像の幅、高さ、色、タイプを抽出

  • 身長
  • 色(黒&白、色や透明?色の場合、主な色は何ですか?)
  • タイプ(画像等PNG、GIF、JPEG、です)
+1

バイト配列でビット単位の操作を使用してその種の情報を抽出することは大きな課題です。私はそれのためにいくつかのライブラリを使用したいと思います。 – Simon

+0

何らかの画像を作成する(おそらく 'ImageIO'を使用して)画像のプロパティを抽出します – MadProgrammer

+0

@imimライブラリを使用しても問題はありません。 –

答えて

9

ImageIOを使用してバッファリングされたイメージとして読み取り、必要なものを取得します。 java doc(http://docs.oracle.com/javase/6/docs/api/javax/imageio/ImageIO.html)を参照してください。私は別のファイルを持っている出力ここ

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()); 
} 

されています:

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

それを

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

私にコードスニペットを教えてください。私は本当にそれを感謝します。 –

+0

特に色の部分です。 –

+0

編集していただきありがとうございます。色の情報はどうですか? 'BufferedImage'でも可能ですか?ありがとう。 –

関連する問題