Bestimmte Bereiche in einer Grafik/Bild transparent machen

Alice

Erfahrenes Mitglied
Bereiche einer Grafik transparent machen

Hallo.

Ich habe ein kleines Skript geschrieben was aus Grafiken und Bildern Comics macht.

Mein Problem ist nun aber das ich die ecken transparent machen möchte.

aaa.png

Wie kann ich die ecken nachträglich mit PHP transparent machen?

Die Comic-Avatare haben leider alle eine unterschiedliche Größe. Ich habe gerade keine Idee wie ich die gewünschten Pixel ansteuern kann um vorallem wie ich die Pixel transparent bekomme.

Über ein paar Tipps würde ich mich freuen.

Vielen Dank.
 
Zuletzt bearbeitet:
Anscheinend möchte niemand antworten und da du wiederholst das Thema pushst, warne ich dich öffentlich.

Das Pushen von Beiträgen ist laut Netiquette nicht erlaubt.
 
In den letzten 5 Tagen hast du es sicher selber auch schon probiert. Wie ist dein Stand?

Ansonsten könnt ich mir die Lösung so vorstellen

1) Koordinaten der Eckpunkte bestimmen
2) Die Ecken mit einer exotischen Farbe ausfüllen (eine die sonst nirgens vorkommt)
3) Diese Farbe als Transparent definieren
 
Hallo yaslaw. :)

Leider ist mein Stand immer noch 0.

Ich kann es so machen das ich im PHP-Skript nach der Farbe Weiss suche und durch transparent ersetze aber dann ist das Comic-Avatar kaputt, da an verschiedenen Stellen Weiss verwendet wird.

Die Idee mit der exotischen Farbe ist gut, jedoch nicht durchführbar da normale Bilder in Comiv-Avatare umgeändert werden und da kommen alle möglichen Farben drin vor.

Am besten wäre es wenn ich die Ecken (jeweils 3px) gezielt ansteuern könnte. Und dazu habe ich leider keinen Ansatz.

Ich arbeite aktuell mit PHP und ImageMagick.
 
Also wenn es sich wirklich immer um die 3 Pixel an den Ecken handelt, dann kannst du diese doch mit imagesetpixel einfärben.

Die Frage ist halt wie du eine Farbe findest die dann auch auf transparent eingestellt werden kann.
 
Ja das ist die Frage.

Wenn alles nichts hilft, hätte ich noch eine Idee. Und zwar nimm ich eine 1x1px Grafik die transparent ist und kopiere sie an die richtigen Stellen in der Grafik.

Sollte doch funktionieren oder?
 
Geh einfach das rgb-Spektrum durch und ermittle die erste rgb-Farbe die im Bild nicht vorkommt.

PHP:
//Erste nicht verwendete RGB-Kombination herausfinden 
for($r = 0; $r>256; $r++){
    for($g = 0; $g>256; $g++){
        for($b = 0; $b>256; $b++){
            if(imagecolorexact($img, $rm $g, $b) == -1){
                //Farbe in der Grafik nicht gefunden
                //neue Farbe definieren 
                $colTransparent = ImageColorAllocate($img, $r, $g, $b);
                //Alle drei Schleifen abbrechen                
                break 3;
            }        
        }
    }
}


//Ecke mit dieser Farbe füllen
imagesetpixel($img, 0, 0, $colTransparent);
imagesetpixel($img, 0, 1, $colTransparent);
imagesetpixel($img, 1, 0, $colTransparent);
//Farbe als Transparent definireren
imagecolortransparent($img, $colT);

imagepng($img);
imagedestroy($img);


Ja das ist die Frage.

Wenn alles nichts hilft, hätte ich noch eine Idee. Und zwar nimm ich eine 1x1px Grafik die transparent ist und kopiere sie an die richtigen Stellen in der Grafik.

Sollte doch funktionieren oder?
Nope. Wenn du transparent auf eine Grafik kopierst, dann nimmt es die Farbe der Zielgrafik
 
Zuletzt bearbeitet:
Verflixt, mit einer knappen Stunde Verspätung hätte ich jetzt auch fast eine solche Lösung hinbekommen.
 
Zurück