- PR -

bmpからJPEGへの変換

1
投稿者投稿内容
aco0000
会議室デビュー日: 2004/09/16
投稿数: 18
投稿日時: 2004-09-16 07:38
bgr233という青2ビット緑3ビット赤3ビットの形式のバイト列をJPEGに変換したいのですが
うまくいきません

今はカラーモデルを作ってからイメージを作成して配列ごとデータを設定しています
そのあと
ImageIO.write(biImg, "jpeg", ro);
で書き込んでいます
これを実行するとImageIO.writeのところでArrayIndexOutOfBoundsExceptionが出てしまい困っています
原因がなんなのか分かる方がいらっしゃったらご教授願います

こんな感じのソースです
sisが入力ストリームでroが出力ストリームです

DirectColorModel bgr233 = new DirectColorModel(8,0x7,0x38,0xc);
WritableRaster raster = bgr233.createCompatibleWritableRaster(width, height);

BufferedImage biImg=new BufferedImage(bgr233, raster, false, new Hashtable());

byte[] datas = new byte[height*width];
for(int pos=0;pos<width*height;pos++){
int isis = sis.read();
if(isis==-1) return;
datas[pos] = (byte)isis;
}
raster.setDataElements(0,0,width,height,datas);
ImageIO.write(biImg, "jpeg", ro);
aco0000
会議室デビュー日: 2004/09/16
投稿数: 18
投稿日時: 2004-09-16 08:51
解決しました
自己レスです
8ビットピクセルデータだとJPEG変換は出来ないようで
24ビット?にカラーの変換をかけたら出来たようです
お騒がせしました

BufferedImage biImg
=new BufferedImage(bgr233, raster, false, new Hashtable());

BufferedImage trueImg
=new BufferedImage(width,height,BufferedImage.TYPE_INT_RGB);

ColorConvertOp cco = new ColorConvertOp(null);
BufferedImage deImg = cco.filter(biImg, trueImg);

ImageIO.write(deImg, "jpeg", ro);
1

スキルアップ/キャリアアップ(JOB@IT)