- - PR -
jpeg画像の読み込み、加工、書き出しについて
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2005-09-06 19:20
jpeg画像を読み込み・ピクセル単位で色を変え・表示し・新しいjpegファイルとして書き出すプログラムを目指しています。
読み込み・ピクセル単位の加工・表示のところまでは出来たのですが書き出しのところで詰まってしまいました。 読み込み〜表示までは下記のように作りました。これにファイル書き出しの機能を付けるにはどうしたらよいのかアドバイスをお願いします。 import java.awt.*; import java.awt.image.*; import java.io.*; import java.applet.Applet; import com.sun.image.codec.jpeg.*; import java.awt.Graphics; import java.awt.image.BufferedImage; import java.io.FileOutputStream; import java.io.OutputStream; import com.sun.image.codec.jpeg.JPEGEncodeParam; import com.sun.image.codec.jpeg.JPEGImageEncoder; import com.sun.image.codec.jpeg.JPEGCodec; public class JpegRead extends Applet { BufferedImage image; Image NewImage; public void init() { int GraphX = 800; int GraphY = 600; //ピクセル単位で処理するための配列 int[] iPix = new int[800*600]; image = new BufferedImage(GraphX, GraphY, BufferedImage.TYPE_INT_RGB); //読み込み try{ File ins = new File("SUNSET24.jpg"); FileInputStream is = new FileInputStream(ins); JPEGImageDecoder decoder = JPEGCodec.createJPEGDecoder(is); image = decoder.decodeAsBufferedImage(); } catch(IOException e){} PixelGrabber PG = new PixelGrabber(image,0,0,800,600,iPix,0,800); try{ PG.grabPixels(); } catch(InterruptedException ie) { System.out.println(ie); } //ピクセル単位の操作 for(int i=0; i<800*600;i++){ int iIndex = iPix[i]; int iRed = (0xff & (iIndex >> 16)); //r値 int iGreen = (0xff & (iIndex >> ); //g値 int iBlue = (0xff & iIndex); //b値 //加工したデータをイメージのピクセルデータに収める。 iPix[i] = (0xff000000 | iRed<<16 | iGreen<<8 | iBlue); } //操作後のイメージ(配列)をNewImageへ NewImage = createImage(new MemoryImageSource(800,600,iPix,0,800)); } public void paint(Graphics g) { g.drawImage(NewImage, 30,30, this); } } | ||||
|
投稿日時: 2005-09-06 19:37
http://66.102.7.104/search?q=cache:6da9vfApE9EJ:java.hitachi-sk.co.jp/tech/gui2D/2D/createjpeg.html+java+jpeg+file+FileOutputStream&hl=ja&start=1&lr=lang_ja
| ||||
|
投稿日時: 2005-09-06 21:15
こんにちは、さくらばです。
com.sun.image.codec.jpeg パッケージはサポートされていないので、 なるべく使わないほうがいいです。 J2SE 1.4 から標準で提供されている Image I/O を使うほうがいいで すよ。 ここを参考にしてください。 http://www.javainthebox.net/laboratory/JDK1.4/Graphics/ImageIO/ImageIO.html | ||||
|
投稿日時: 2005-09-07 15:35
ありがとうございます。
お二方の紹介してくださったサイトを参考に頑張ってみます。 |
1