BufferedImage Farbe "Transparent"

Status
Nicht offen für weitere Antworten.

The_S

Top Contributor
Wie komme ich an die "Farbe Transparent" ran? Also dass ich keinen weißen Hintergrund bei einem BufferedImage hab, sondern dass einfach das, was nicht mit anderer Farbe beschmiert ist die dahinterliegende Komponente freigibt? Hoff ich konnt mich einigermaßen klar ausdrücken :wink: .
 

The_S

Top Contributor
Danke, wie kann ich die Farbe dann einem Pixel eines BufferedImages zuweisen?

Code:
buffimage.setRGB(x, y, new Color(0, 0, 0, 0).getRGB());

dürfte ja nicht gehen!?
 

The_S

Top Contributor
0,0,0 ist schwarz :wink: . Ich denk ma das liegt an der 4. 0 die du vergessen hast. Aber ansonsten kA, ich hab ja gefragt. Hatte auch noch keine Zeit das zu testen.
 

m@nu

Bekanntes Mitglied
damit du in einem BufferedImage transparente farben verwenden kannst, musst du das entsprechende flag beim erstellen des objektes setzen:
Code:
BufferedImage transparancy = new BufferedImage(100,100, BufferedImage.TYPE_INT_ARGB);

der code von roar stimmt... die vierte 0 gibt den transparenz-level an (entweder als float (0.0 bis 1) oder als int (0-255))
hab das auch schon einige male so verwendet :) (so lassen sich z.b. mit AWT nette overlayeffekte erstellen)
 

The_S

Top Contributor
Ah, danke! Aber meinen Code, bei dem ich jetzt z. B.

Code:
buffImage.setRGB(x, y, col.getRGB());

muss ich deswegen jetzt nicht umschreiben oder?
 

m@nu

Bekanntes Mitglied
mit dem spezifischen setzen von pixeln in einem BufferedImage habe ich leider keine erfahrungen...
denke aber, das sollte gehen :)
 

The_S

Top Contributor
Funktioniert nicht so richtig. Möchte jetzt mal testhalber alle Weißwerte Transparent machen. Das mache ich so:

Code:
for (int i = img.getWidth() - 1; i > -1; i--) {
	for (int j = img.getHeight() - 1;  j > -1; j--) {
		if (img.getRGB(i, j) == new Color(255,255,255).getRGB()) {
			img.setRGB(i, j, new Color(0, 0, 0, 0).getRGB());
		}
	}
}

Wenn ich das dann speichere, ist alles schwarz was nicht weiß war und was weiß war hat so nen komischen Rosa-Hautfarbenen ton.
 

m@nu

Bekanntes Mitglied
das mit dem rosa-ton habe ich auch schon einmal bemerkt...
komischerweise ist der rosa-ton aber nicht vorhanden, wenn du das ganze wieder mit java einliest :-/
 

The_S

Top Contributor
Keine eine Idee woran das liegen könnte und wie man das umgehen kann? Ich speichere das Bild mit ImageIO.
 

m@nu

Bekanntes Mitglied
hatte das phänomen einmal bei meiner ThumbnailFactory gesehen... unterdessen hab ich das prob nicht mehr... denke es liegt daran, dass mein BufferedImage kein ARGB mehr ist :-/

in welchem format speicherst du dein BufferedImage denn auf die platte?
 

The_S

Top Contributor
Welches hätteste den gerne :wink: ? Alles in was ImageIO speichern kann! Bei meinem Beispiel wars jpg
 

m@nu

Bekanntes Mitglied
hm, dann liegts an dem, wo ich oben beschrieben habe...
wieso willst du transparenz in ein JPG speichern? JPG unterstützt keine transparenz...

wenn du aber doch in ein JPG speichern willst, versuchs mal so:
Code:
BufferedImage toSave = new BufferedImage(100, 100, BufferedImage.TYPE_INT_BGR);
toSave.getGraphics().drawImage(deinBufferedImage, 0, 0, Color.BLACK, null);

try {
    ImageIO.write(toSave, "jpeg", new File("ausgabe.jpg"));
} catch (IOException e) {
    e.printStackTrace();
}

alles was transparent ist, wird in diesem beispiel mit schwarz hinterlegt...
 

The_S

Top Contributor
Nochmal 3 Fragen:

1. Warum kann ich in einem *.png nur komplette oder gar keine Transparenz speichern? Speichere mit ImageIO und in meinem Javaprogramm wird die Transparenz richtig angezeigt.

2. Ich hole mir mit
Code:
ImageIO.getWriterFormatNames()
alle Dateiendungen in die geschrieben werden kann. Das sind *.jpg, *.jpeg, *.png, *.bmp, und *.wbmp Allerdings kann ich nur JPEG und PNG Bilder anschließend wieder lesen (egal ob mit meinem Javaprogramm oder mit einem Anderen)

3. Kann ich auch irgendwie andere Formate speichern (z. B. *.gif)?
 

m@nu

Bekanntes Mitglied
1. denke mal, das liegt hierbei daran, dass du per drawImage die transparenz ja quasi wieder "eliminierst" ... der schwarze hintergrund schimmert durch das transparente durch...

2. hast du versucht per ImageIO wieder einzulesen? ... denke, dann sollte es gehen

3. :arrow: http://www.gif4j.com/java-gif4j-pro-gif-image-encode-save.htm
mit einer zusätzlichen filter-klasse scheint das möglich zu sein :)
 

The_S

Top Contributor
1. Wie meinst du das mit drawImage? Mein Bild wird in meiner GUI z. B. "Halb-Transparent" angezeigt. Die anzeige verweißt auf ein BufferedImage, welches ich dann auch mit ImageIO speichere

2. Jup, versuche via ImageIO wieder einzulesen und es geht komischerweiße nicht ???:L

3. Danke, werd ich mir mal anschauen.
 

m@nu

Bekanntes Mitglied
1. in dem beispiel dass ich dir mal gepostet habe, wird das BufferedImage in ein weiteres BufferedImage gezeichnet, welches nicht mehr ARGB ist ... (wegen dem rosa-effekt)
denke, wenn man da ein wenig herumspielt, sollte man das hinbekommen

2. hmm, komisch... hast du das PNG mal im photoshop o.ä. geöffnet? wird die transparenz wirklich korrekt gespeichert? (siehe 1. :) )
 

The_S

Top Contributor
1. Das wird ja nur bei jpg angewand. Beim rest muss ich bei dem Image ja nicht nochmal die Transparenz durch schwarz ersetzen

2. Nö, nirgendwo wird es teilweise transparent angezeigt. Aber ich stelle das selbe BufferedImage in meiner GUI dar, wie ich es auch später mit ImageIO speichere.

Wenn dir ein wenig Code weiterhelfen würde, dann sag mir was du brauchst :wink:
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
L AWT Ändern der Farbe eines BufferedImage mit Farbähnlichkeit AWT, Swing, JavaFX & SWT 5
I Arbeitsspeicherverbrauch BufferedImage.TYPE_INT_RGB vs. TYPE_3BYTE_BGR AWT, Swing, JavaFX & SWT 6
H BufferedImage zurücksetzen funktioniert nicht AWT, Swing, JavaFX & SWT 12
I GEmaltes BufferedImage löschen AWT, Swing, JavaFX & SWT 3
cool_brivk24 BufferedImage einem ClickEvent hinzufügen AWT, Swing, JavaFX & SWT 13
cool_brivk24 AWT BufferedImage wird nicht geladen AWT, Swing, JavaFX & SWT 17
J linken Bildausschnitt eines BufferedImage abschneiden AWT, Swing, JavaFX & SWT 4
Zar von Domarus JFrame zu BufferedImage konvertieren AWT, Swing, JavaFX & SWT 3
S 2D-Grafik User-BufferedImage rotieren im Zentrum und ohne "anpassung" AWT, Swing, JavaFX & SWT 2
C Pixel-Rendering/Animation Performance in BufferedImage AWT, Swing, JavaFX & SWT 1
H Swing BufferedImage zeichnen AWT, Swing, JavaFX & SWT 1
C Swing BufferedImage zeichnen und JLabels setzen. AWT, Swing, JavaFX & SWT 17
G Subimage von BufferedImage speichern AWT, Swing, JavaFX & SWT 4
D JPanel Graphic2D als BufferedImage Speichern AWT, Swing, JavaFX & SWT 5
D BufferedImage -> Feature Extraktion. Unterschiedliche BufferedImage imageTypes problem AWT, Swing, JavaFX & SWT 4
I 2D-Grafik Shape aus BufferedImage "löschen" AWT, Swing, JavaFX & SWT 2
M 2D-Grafik LookupOp Operation auf BufferedImage AWT, Swing, JavaFX & SWT 7
GianaSisters 2D-Grafik BufferedImage.getSubimage - Frage AWT, Swing, JavaFX & SWT 7
P BufferedImage schlechte Qualität beim Abspeichern AWT, Swing, JavaFX & SWT 9
S BufferedImage als schwarz-weiß-Bild AWT, Swing, JavaFX & SWT 3
Luk10 BufferedImage[...].getData() vs BufferedImage.setRGB() AWT, Swing, JavaFX & SWT 2
D Schnelles kopieren von Pixeln in ein BufferedImage AWT, Swing, JavaFX & SWT 25
J Flackern wie mit BufferedImage beheben AWT, Swing, JavaFX & SWT 4
N Swing BufferedImage neu laden AWT, Swing, JavaFX & SWT 10
N 2D-Grafik BufferedImage, Line2D, Swing und die Probleme AWT, Swing, JavaFX & SWT 5
Luk10 BufferedImage auf ein anderes BufferedImage zeichnen AWT, Swing, JavaFX & SWT 6
P BufferedImage auf JPanel AWT, Swing, JavaFX & SWT 11
K 2D-Grafik BufferedImage eingelesen, welches Modell?! AWT, Swing, JavaFX & SWT 2
T BufferedImage bei paintComponent AWT, Swing, JavaFX & SWT 6
C 2D-Grafik BufferedImage laden, Frage zum Code AWT, Swing, JavaFX & SWT 2
0x7F800000 2D-Grafik int[] zu BufferedImage konvertieren AWT, Swing, JavaFX & SWT 27
H 2D-Grafik BufferedImage aus Integer-Array AWT, Swing, JavaFX & SWT 3
Luk10 2D-Grafik BufferedImage sauber rotieren AWT, Swing, JavaFX & SWT 16
P Image mehrfach in ein BufferedImage zeichnen AWT, Swing, JavaFX & SWT 7
A BufferedImage nach dem Speichern immer schwarz AWT, Swing, JavaFX & SWT 8
J Bild aus Datei in BufferedImage laden AWT, Swing, JavaFX & SWT 4
E BufferedImage Alphaknal ein- und ausblenden AWT, Swing, JavaFX & SWT 7
N BufferedImage zeichnen AWT, Swing, JavaFX & SWT 4
D BufferedImage Größe skalieren AWT, Swing, JavaFX & SWT 2
P Swing Vom BufferedImage bei paintComponent nur soviel zeichnen, wie nötig AWT, Swing, JavaFX & SWT 3
B 2D-Grafik BufferedImage Performance AWT, Swing, JavaFX & SWT 3
Y frage zu BufferedImage AWT, Swing, JavaFX & SWT 7
E AWT RenderedImage aus BufferedImage erzeugen, um Bild abzuspeichern? AWT, Swing, JavaFX & SWT 4
S Unterscheiden ob ein Graphics-Objekt von einer JComponent oder einem BufferedImage kommt..? AWT, Swing, JavaFX & SWT 4
A 2D-Grafik BufferedImage wird nicht eingezeichnet AWT, Swing, JavaFX & SWT 3
G 2D-Grafik BufferedImage Hintergrund immer schwarz AWT, Swing, JavaFX & SWT 4
Developer_X Swing Auf ein BufferedImage mit Graphics/Graphics2D zeichnen AWT, Swing, JavaFX & SWT 6
J AWT BufferedImage to 2DArray AWT, Swing, JavaFX & SWT 10
R Bild drehen UND skalieren (Image bzw BufferedImage) AWT, Swing, JavaFX & SWT 5
J JPanel in Bufferedimage AWT, Swing, JavaFX & SWT 3
1 BufferedImage in byte[], dann in String und zurück AWT, Swing, JavaFX & SWT 7
J Swing paintComponent() - repaint() - BufferedImage anzeigen AWT, Swing, JavaFX & SWT 5
C BufferedImage-Fehler? Falsches Bild wir gezeichnet AWT, Swing, JavaFX & SWT 5
B BufferedImage Builder AWT, Swing, JavaFX & SWT 15
F Transparentes BufferedImage über BufferedImage AWT, Swing, JavaFX & SWT 12
F Größe von BufferedImage ändern AWT, Swing, JavaFX & SWT 27
I Swing JComponent als BufferedImage speichern AWT, Swing, JavaFX & SWT 18
Dragonfire Swing Zoom-Vorgang optimieren [BufferedImage] AWT, Swing, JavaFX & SWT 2
2 Memory Leak mit BufferedImage !! AWT, Swing, JavaFX & SWT 15
X BufferedImage maximiert in JFrame anzeigen? AWT, Swing, JavaFX & SWT 2
R JPanel - BufferedImage - zeichnen großer Bilder AWT, Swing, JavaFX & SWT 2
R JTable - TableCellRenderer - BufferedImage AWT, Swing, JavaFX & SWT 9
D BufferedImage und Graphics2D AWT, Swing, JavaFX & SWT 3
R Zeichnen von Zahlen in BufferedImage AWT, Swing, JavaFX & SWT 6
G BufferedImage.getRGB() mit 3 int-Werten vergleichen AWT, Swing, JavaFX & SWT 2
Luma BufferedImage wird nicht gezeichnet AWT, Swing, JavaFX & SWT 3
G keine ScaledInstance von BufferedImage? AWT, Swing, JavaFX & SWT 6
S BufferedImage & Scaling: Altes Problem im neuen Gewand AWT, Swing, JavaFX & SWT 2
G zu viele/große BufferedImage führt zu Java heap space AWT, Swing, JavaFX & SWT 5
G BufferedImage und jpg --> maximale Qualität AWT, Swing, JavaFX & SWT 9
F HTML Text irgendwie auf BufferedImage bringen AWT, Swing, JavaFX & SWT 3
R BufferedImage Problem AWT, Swing, JavaFX & SWT 2
G Problem mit BufferedImage und imageIO AWT, Swing, JavaFX & SWT 2
S BufferedImage drehen AWT, Swing, JavaFX & SWT 3
? ActionListener auf BufferedImage AWT, Swing, JavaFX & SWT 11
M BufferedImage mit html interpretierten String beschriften AWT, Swing, JavaFX & SWT 3
A Probelme mit großen BufferedImage in paintComponent AWT, Swing, JavaFX & SWT 7
B Farbtiefe eines BufferedImage verringern AWT, Swing, JavaFX & SWT 3
F ImageIcon -> BufferedImage AWT, Swing, JavaFX & SWT 2
T Performance Problem bei BufferedImage AWT, Swing, JavaFX & SWT 3
F Animiertes Gif als BufferedImage AWT, Swing, JavaFX & SWT 10
L Anzeigen von fotos: ImageIcon oder BufferedImage + paint() ? AWT, Swing, JavaFX & SWT 5
C Rotate BufferedImage --> Bild unvollständig AWT, Swing, JavaFX & SWT 5
U Streifen hinter bewegtem BufferedImage AWT, Swing, JavaFX & SWT 13
M BufferedImage skalieren AWT, Swing, JavaFX & SWT 6
T BufferedImage verkleinern Resultat ist zu pixelig. AWT, Swing, JavaFX & SWT 6
G Image Object speichern oder in ein BufferedImage umwandeln AWT, Swing, JavaFX & SWT 2
P Problem beim Zeichnen auf ein BufferedImage AWT, Swing, JavaFX & SWT 4
B BufferedImage aus einer Datei AWT, Swing, JavaFX & SWT 4
C Farben in BufferedImage ändern ? AWT, Swing, JavaFX & SWT 2
J Image to BufferedImage AWT, Swing, JavaFX & SWT 5
T BufferedImage kopieren AWT, Swing, JavaFX & SWT 3
T BufferedImage + bestimmten bereich ausfüllen AWT, Swing, JavaFX & SWT 3
M BufferedImage Größe? AWT, Swing, JavaFX & SWT 10
U Löschen eines BufferedImage AWT, Swing, JavaFX & SWT 7
J Image aus BufferedImage ohne AWT AWT, Swing, JavaFX & SWT 5
V Image in BufferedImage AWT, Swing, JavaFX & SWT 3
J BufferedImage aus byte-Array erstellen AWT, Swing, JavaFX & SWT 3
H JavaFX PixelWriter.setColor setzt Farbe nicht AWT, Swing, JavaFX & SWT 2
F Progressbar Farbe AWT, Swing, JavaFX & SWT 6

Ähnliche Java Themen

Neue Themen


Oben