- - PR -
IndexColorModelについて
1
| 投稿者 | 投稿内容 |
|---|---|
|
投稿日時: 2003-10-17 21:12
以前、ここのページの方々に御世話になった蔵です。
今IndexColorModelについて、勉強しているのですが イメージからピクセルデータの配列を取り出してデフォルトのRGBカラーモデルから IndexColorModelに置き換えた配列をあらかじめ保存しておきたいのですが、 何か方法はありますか? import java.applet.Applet; import java.awt.*; import java.awt.image.*; public class Test16 extends Applet { public static final int WIDTH = 100; public static final int HEIGHT = 100; byte r[] = {(byte)255, (byte)255, (byte)221, (byte) 17}; byte g[] = {(byte) 0, (byte)255, (byte)221, (byte) 17}; byte b[] = {(byte)255, (byte)255, (byte)221, (byte) 17}; int i_pixel_W = 5; int i_pixel_H = 5; int pixels[] = new int[i_pixel_W * i_pixel_H]; int imgPixels[] = new int[i_pixel_W * i_pixel_H]; PixelGrabber grabber; IndexColorModel icm; int w; int h; MediaTracker m_Med; Image img_Palette; Image img_Image; //初期化 //********************************************************************** public void init() { m_Med = new MediaTracker(this); img_Palette = getImage(getCodeBase(),"パレット.gif"); m_Med.addImage(img_Palette,0); w = Integer.parseInt(getParameter("W")); h = Integer.parseInt(getParameter("H")); grabber = new PixelGrabber(img_Palette,0,0,i_pixel_W,i_pixel_H,pixels,0,i_pixel_W); try { grabber.grabPixels(); }catch(InterruptedException e) { } if((grabber.getStatus() & ImageObserver.ABORT) != 0) { } IndexColorModel icm = new IndexColorModel(8,4,r,g,b); changePixel(pixels,imgPixels); //ここで得た配列を保存したいです img_Image = createImage(new MemoryImageSource(i_pixel_W,i_pixel_H,icm,imgPixels,0,i_pixel_W)); } public void start() { } public void stop() { } public void run() { } public void paint(Graphics g) { g.drawImage(img_Image,0,0,w*20,h*20,this); } //メソッド //********************************************************************** public void changePixel(int oldpixel[],int newpixel[]){ for(int i = 0 ; i < oldpixel.length - 1 ; i++) { switch(oldpixel[i]) { case 0xFFFF00FF: newpixel[i] = (byte) 0; break; case 0xFFFFFFFF: newpixel[i] = (byte) 1; break; case 0xFFDDDDDD: newpixel[i] = (byte) 2; break; case 0xFF111111: newpixel[i] = (byte) 3; break; } } } } |
1
