- PR -

jpeg画像の読み込み、加工、書き出しについて

1
投稿者投稿内容
ボン
会議室デビュー日: 2005/09/06
投稿数: 2
投稿日時: 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/07/14
投稿数: 276
お住まい・勤務地: 実家戻ったw
投稿日時: 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
さくらば
大ベテラン
会議室デビュー日: 2002/11/12
投稿数: 145
投稿日時: 2005-09-06 21:15
こんにちは、さくらばです。

引用:

ボンさんの書き込み (2005-09-06 19:20) より:
jpeg画像を読み込み・ピクセル単位で色を変え・表示し・新しいjpegファイルとして書き出すプログラムを目指しています。
読み込み・ピクセル単位の加工・表示のところまでは出来たのですが書き出しのところで詰まってしまいました。
読み込み〜表示までは下記のように作りました。これにファイル書き出しの機能を付けるにはどうしたらよいのかアドバイスをお願いします。



com.sun.image.codec.jpeg パッケージはサポートされていないので、
なるべく使わないほうがいいです。

J2SE 1.4 から標準で提供されている Image I/O を使うほうがいいで
すよ。

ここを参考にしてください。
http://www.javainthebox.net/laboratory/JDK1.4/Graphics/ImageIO/ImageIO.html
ボン
会議室デビュー日: 2005/09/06
投稿数: 2
投稿日時: 2005-09-07 15:35
ありがとうございます。
お二方の紹介してくださったサイトを参考に頑張ってみます。
1

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