2016-08-12 5 views
1
import java.awt.*; 
import java.awt.image.*; 

public class Transparency { 
    public static Image makeColorTransparent(Image im, final Color color) { 
ImageFilter filter = new RGBImageFilter() { 
    public int markerRGB = color.getRGB() | 0xFF000000; 

    public final int filterRGB(int x, int y, int rgb) { 
    if ((rgb | 0xFF000000) == markerRGB) { 
     return 0x00FFFFFF & rgb; 
     } 
    else { 
     return rgb; 
     } 
    } 
    }; 

ImageProducer ip = new FilteredImageSource(im.getSource(), filter); 
return Toolkit.getDefaultToolkit().createImage(ip); 
} 
} 

GifModifiedWithTransparentBackground = 
    Transparency.makeColorTransparent 
    (GifOriginalWithWithBlueBackground, new Color(0).blue); 
    } 

Я нашел этот пример, чтобы изменить фон на прозрачный, но я не могу найти место, где он фактически установлен в прозрачный. Вместо прозрачного я хочу изменить его на другой цвет, но я не могу, потому что не знаю, где он устанавливает прозрачность. Может ли кто-нибудь сказать мне, где он настроен на прозрачность?Java Изменение цвета изображения

+0

'return 0x00FFFFFF & rgb;'. Это тот же цвет, с альфа-установкой на ноль. – resueman

+0

Значения цвета хранятся как '0xAARRGGBB'. Если вам нужна другая альфа, замените альфа-часть ('00') на нужное вам значение (между' 00' и ​​'FF'). – resueman

+0

, поэтому, если я его изменю, он изменит цвет, который заменен? – Repardeimaj

ответ

1

Рассмотрим формата 0xAARRGGBB, где AA является альфа (прозрачность), RR является красным, GG является зеленый и BB является синим компонентом. Это шестнадцатеричное число, поэтому значения варьируются от 00 до FF (255).

Ваш вопрос касается замены значения альфа. Эта линия:

public int markerRGB = 0xFF000000;

Если рассматривать значение как 0xFF000000 (черный), AND вернется 0x00000000, который равен нулю, значение альфа-черный, прозрачный цвет. Аналогичным образом вы получите прозрачные значения альфа, которые делают определенные точки вашего изображения прозрачными после назначения значения в markerRGB.

Смежные вопросы