Java PNG kép készítés

Java PNG kép készítés
2016-05-09T13:27:32+02:00
2016-05-09T13:57:52+02:00
2022-12-03T15:30:36+01:00
nem6meg
Sziasztok!

Egy beolvasott PNG képet szeretnék pixelenként "lemásolni" egy program közben létrehozott képre. (Nem ez a megoldandó probléma, közben majd a pixelenkénti értékeket akarom módosítgatni, de amíg az egyszerű inputból mindenféle módosítgatás nélkül nem jó outputot csinál, addig nincs értelme hozzáfogni a "program logikájához".)

A bal oldali kép a beolvasott (asd.png), a jobb oldali pedig az eredménykép, amit létrehoz a kód (MyFile.png)
http://kepfeltoltes.hu/160509/aaaaaaaaaaaaaaaaaaaa_www.kepfeltoltes...

Több gond is van:
  - az eredményképen nincsen átlátszó "szín"
  - számomra érthetetlen módon "csúszik szét" az egész ott is, ahol objektumpont van.

És a kód:
pastebin
Mutasd a teljes hozzászólást!
Szerintem itt lesz az eb elhantolva:

Color mycolor = new Color(image.getRGB(i, j));
A Color(int) konstruktor csak az R, G és B komponenseket veszi ki a paraméteréből, az alpha-t 255-re állítja. Lényegében letörlöd az alpha komponensét a képnek, így az átlátszó pixelek helyett teljesen átlátszatlan pixeleket kapsz, amiknek a színe attól függ, milyen R, G és B értékeket tartalmazott a fájl.

A doksi alapján neked a Color(int, boolean) konstruktor kéne, méghozzá úgy, hogy a második paramétere true, így mind a négy komponenst kiolvasná a kapott paraméterből.

Alternatív megoldás az, hogy magad bontod ki a komponenseket, extra objektum allokálása nélkül:

int rgb = image.getRGB(i,j); int blue = rgb & 0xFF; int green = (rgb >>> 8) & 0xFF; int red = (rgb >>> 16) & 0xFF; int alpha = rgb >>> 24;
Persze ezt könnyebb elrontani is. A fenti kódot nem próbáltam ki, úgyhogy nem vállalok garanciát rá
Mutasd a teljes hozzászólást!

Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd