עזרה בבקשהה
אני צריך להעלים את הרקע של תמונה שיצרתי, כשאני מצייר אותה על המסך, רואים את הרקע האפור של הapplet במקום את מה שאמור להיות שם.
חיפשתי ומצאתי שאפשר לשנות את ה alpha ב rgba של הצבע המסוים כדי שיהיה "שקוף". הבעיה היא... שזה לא עובד!
יש הרבה דרכים לעשות את זה, אבל כל מה שניסיתי לא עובד, אני מצליח לשנות את ה alpha אבל עדיין רואים את האפור של ה applet..
אם מישהו יודע איך עושים את זה אז בבקשה שתפו..
קוד:
public void cleanImage(BufferedImage target,int r,int g,int b,int a)
{
int col = ((a << 24) | (r << 16) | (g << 8) | b);
int trans = ((0 << 24) | (r << 16) | (g << 8) | b);
int [] pixels = ((DataBufferInt)target.getRaster().getDataBuffer()).getData();
ColorModel cm = target.getColorModel();
SampleModel sm = target.getRaster().getSampleModel();
for (int i = 0;i<pixels.length;i++)
if (pixels == col) pixels = trans;//-1118482;
DataBuffer db = new DataBufferInt(pixels,target.getHeight()*target.getWidth());
WritableRaster wr = Raster.createWritableRaster(sm,db,null);
target = new BufferedImage(cm, wr, false, null);
}
אני צריך להעלים את הרקע של תמונה שיצרתי, כשאני מצייר אותה על המסך, רואים את הרקע האפור של הapplet במקום את מה שאמור להיות שם.
חיפשתי ומצאתי שאפשר לשנות את ה alpha ב rgba של הצבע המסוים כדי שיהיה "שקוף". הבעיה היא... שזה לא עובד!
יש הרבה דרכים לעשות את זה, אבל כל מה שניסיתי לא עובד, אני מצליח לשנות את ה alpha אבל עדיין רואים את האפור של ה applet..
אם מישהו יודע איך עושים את זה אז בבקשה שתפו..
קוד:
public void cleanImage(BufferedImage target,int r,int g,int b,int a)
{
int col = ((a << 24) | (r << 16) | (g << 8) | b);
int trans = ((0 << 24) | (r << 16) | (g << 8) | b);
int [] pixels = ((DataBufferInt)target.getRaster().getDataBuffer()).getData();
ColorModel cm = target.getColorModel();
SampleModel sm = target.getRaster().getSampleModel();
for (int i = 0;i<pixels.length;i++)
if (pixels == col) pixels = trans;//-1118482;
DataBuffer db = new DataBufferInt(pixels,target.getHeight()*target.getWidth());
WritableRaster wr = Raster.createWritableRaster(sm,db,null);
target = new BufferedImage(cm, wr, false, null);
}