- PR -

IndexColorModelについて

1
投稿者投稿内容
会議室デビュー日: 2003/10/03
投稿数: 11
投稿日時: 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

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