ERLEDIGT
JA
JA
ANTWORTEN
3
3
ZUGRIFFE
420
420
EMPFEHLEN
-
04.01.06 10:29 #1
- Registriert seit
- Sep 2004
- Beiträge
- 34
Einen schönen Guten Tag.
Ich habe folgenden Filter, um in einem Image eine Transparente Farbe zu setzten:
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
public class MakeImageTransparent { public static Image makeColorTransparent(Image im, final Color color) { ImageFilter filter = new RGBImageFilter() { // the color we are looking for... Alpha bits are set to opaque public int markerRGB = color.getRGB() | 0xFF000000; public final int filterRGB(int x, int y, int rgb) { if ( (rgb | 0xFF000000) == markerRGB) { // Mark the alpha bits as zero - transparent return 0x00FFFFFF & rgb; } else { // nothing to do return rgb; } } }; ImageProducer ip = new FilteredImageSource(im.getSource(), filter); return Toolkit.getDefaultToolkit().createImage(ip); } }
Wenn ich jetzt z.B. ein Jpg habe, wird leider nciht der ganz Hintergrund transparent, sondern eben nur die pixel genau der Farbe.
Meine Frage ist nun: Gibt es eine möglichkeit, dieser Klasse auch noch eine Toleranz mitzugeben. Das ich sagen kann 10 int werte im RGB Raum Toleranz?
Könnte ich das einfach mit einer Schleife machen? Oder gibt es da eine Elegantere Lösung?
Vielen Dank für die Hilfe schon mal.
Tim
-
04.01.06 13:39 #2
- Registriert seit
- Jun 2002
- Ort
- Saarbrücken (Saarland)
- Beiträge
- 9.886
- Blog-Einträge
- 29
Hallo!
Wie meinst du das mit 10 Werte im RGB Raum Toleranz?
Toleranz nur in einer Farbe, in allen Farben?
Gruss TomJava rocks!
How to become a good Java Programmer?
Does IT in Java and .Net
The only valid measurement of code quality: WTFs / minute
Blog
Xing
Twitter
-
04.01.06 13:44 #3
- Registriert seit
- Sep 2004
- Beiträge
- 34
So, ich habe mal was gebastelt.
Nun wird für jedePixel geschaut, ob es in der Toleranz liegt.
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
import java.awt.*; import java.awt.image.*; public class MakeImageTransparent { public static Image makeColorTransparent(Image im, final Color color, final int toleranz) { System.out.println("color.getRGB(): " + color.getRGB()); System.out.println("markerRGB: " + (color.getRGB() | 0xFF000000)); ImageFilter filter = new RGBImageFilter() { // the color we are looking for... Alpha bits are set to opaque public int markerRGB = color.getRGB() | 0xFF000000; public Color markerColor = new Color(color.getRGB() | 0xFF000000); public final int filterRGB(int x, int y, int rgb) { // Ist das zu filternde Pixel // gleich der transparenten Farbe? Color PixelColor = new Color(rgb | 0xFF000000); //if ( (rgb | 0xFF000000) == markerRGB) { //Liegt die Farbe des Pixels im Toleranzbereich? if ( ( ( (markerColor.getRed() - PixelColor.getRed()) < toleranz && (markerColor.getRed() - PixelColor.getRed()) >= 0) || ( (PixelColor.getRed() - markerColor.getRed()) < toleranz && (PixelColor.getRed() - markerColor.getRed()) >= 0)) && ( ( (markerColor.getGreen() - PixelColor.getGreen()) < toleranz && (markerColor.getGreen() - PixelColor.getGreen()) >= 0) || ( (PixelColor.getGreen() - markerColor.getGreen()) < toleranz && (PixelColor.getGreen() - markerColor.getGreen()) >= 0)) && ( ( (markerColor.getBlue() - PixelColor.getBlue()) < toleranz && (markerColor.getBlue() - PixelColor.getBlue()) >= 0) || ( (PixelColor.getBlue() - markerColor.getBlue()) < toleranz && (PixelColor.getBlue() - markerColor.getBlue()) >= 0))) { // Mark the alpha bits as zero - transparent return 0x00FFFFFF & rgb; } else { // nothing to do return rgb; } } }; ImageProducer ip = new FilteredImageSource(im.getSource(), filter); return Toolkit.getDefaultToolkit().createImage(ip); } }
ganz gut.
-
05.01.06 11:42 #4
- Registriert seit
- Nov 2004
- Beiträge
- 284
Genau das Problem hab ich auch( -> http://www.tutorials.de/tutorials223258.html )

Das ist cool das du da ne Lösung für hast, die werd ich jetzt gleich mal studieren
Vielen Dank
//edit: Ich glaub ich war da zu voreilig, muss mir mein Problem noch mal genauer angucken, ich glaub ich hab Mist erzählt, vergesst es einfach
Geändert von javaprogger1987 (05.01.06 um 11:49 Uhr)
Ähnliche Themen
-
Toleranz bei if-Anweisungen einstellen:
Von Kafkalasch im Forum JavaAntworten: 2Letzter Beitrag: 08.07.08, 09:58 -
Transparenzfilter für BufferedImage?
Von spawn3141 im Forum Swing, Java2D/3D, SWT, JFaceAntworten: 2Letzter Beitrag: 29.04.05, 16:43 -
Toleranz (bild)
Von hannes05 im Forum PhotoshopAntworten: 16Letzter Beitrag: 14.10.02, 17:49





Zitieren

Login





