Hallöchen erstmal, bin neu hier, aber schon ewig passiver Leser.
Jetzt allerdings ist der Zeitpunkt gekommen, wo ich mit meinem mehr oder weniger vorhanden Wissen um die Image-Funktionen an die Grenzen gerate.
Also folgendes (Jedes gutes Problem fängt mit also an!):
Ich habe ein rechteckiges Bild, aus dem eim Kreis ausgeschnitten (!) werden soll, und nur dieser angezeigt werden soll. Also der Ausschnitt ist ein Kreis, die Aussenfläche einfach nur weiß.
Bisher hab ich mir als "Notlösung" folgendes zusammengefrickelt (Bin auch tierisch stolz drauf, dass ich das geschafft hab
):
Kurz zur Erklärung:
Ich hole mir Breite und Höhe des Bildes, teile die jeweils durch zwei, jetzt hab ich den Mittelpunkt des Bildes. Die kleine if Abfrage gibt mir mit $wwohh die kürzeste Seite des Bildes wieder. Das ist wichtig, weil der Kreis soll ja nicht über das Bild hinaus gehen. Dann hab ich mir ein halbtransparentes weiß definiert. Als nächstes kommt ein Kreis (also eigtl ne Ellipse aber is ein Kreis
) auf das Bild, mit dem Mittelpunkt, den ich vorher definiert hab und Höhe & Breite jeweils die kürzeste Seite des Bildes.
Das Funktioniert auch ganz gut, aber ab hier bin ich am verzweifeln. Ich hätte das gerne, dass dieser Kreis quasi nur den Ausschnitt zeigt, aber die restliche Aussenfläche weiß wird, also quasi den Kreis invertieren, umkehren. Krieg ich das irgendwie hin?
Ich war natürlich auch nicht faul und habs schon probiert mit border zu lösen. Also ein Bild mit 300x300 bekommt dann den borderradius 150 und es ist ein perfekter Kreis, wie ich das möchte. Das Problem ist leider, dass nicht jede Datei ein Quadrat ist und deswegen wird der Kreis kein Kreis mehr :/
Würde mich über Denkanstöße tierisch freuen!
Grüße Heynrich
Jetzt allerdings ist der Zeitpunkt gekommen, wo ich mit meinem mehr oder weniger vorhanden Wissen um die Image-Funktionen an die Grenzen gerate.
Also folgendes (Jedes gutes Problem fängt mit also an!):
Ich habe ein rechteckiges Bild, aus dem eim Kreis ausgeschnitten (!) werden soll, und nur dieser angezeigt werden soll. Also der Ausschnitt ist ein Kreis, die Aussenfläche einfach nur weiß.
Bisher hab ich mir als "Notlösung" folgendes zusammengefrickelt (Bin auch tierisch stolz drauf, dass ich das geschafft hab
):PHP-Code:
$source_image = imagecreatefromjpeg($this->getThumb());
$info = getimagesize ( $this->getThumb() );
$ww = $info[0] / 2;
$hh = $info[1] / 2;
if ($info[0] <= $info[1]) {$wwohh = $info[0];} else {$wwohh = $info[1];}
$weiss = imagecolorallocatealpha ($source_image, 255, 255, 255,50);
imagefilledellipse ( $source_image , $ww , $hh , $wwohh , $wwohh , $weiss );
imagepng($source_image, $this->getThumb());
Ich hole mir Breite und Höhe des Bildes, teile die jeweils durch zwei, jetzt hab ich den Mittelpunkt des Bildes. Die kleine if Abfrage gibt mir mit $wwohh die kürzeste Seite des Bildes wieder. Das ist wichtig, weil der Kreis soll ja nicht über das Bild hinaus gehen. Dann hab ich mir ein halbtransparentes weiß definiert. Als nächstes kommt ein Kreis (also eigtl ne Ellipse aber is ein Kreis
) auf das Bild, mit dem Mittelpunkt, den ich vorher definiert hab und Höhe & Breite jeweils die kürzeste Seite des Bildes.Das Funktioniert auch ganz gut, aber ab hier bin ich am verzweifeln. Ich hätte das gerne, dass dieser Kreis quasi nur den Ausschnitt zeigt, aber die restliche Aussenfläche weiß wird, also quasi den Kreis invertieren, umkehren. Krieg ich das irgendwie hin?
Ich war natürlich auch nicht faul und habs schon probiert mit border zu lösen. Also ein Bild mit 300x300 bekommt dann den borderradius 150 und es ist ein perfekter Kreis, wie ich das möchte. Das Problem ist leider, dass nicht jede Datei ein Quadrat ist und deswegen wird der Kreis kein Kreis mehr :/
Würde mich über Denkanstöße tierisch freuen!
Grüße Heynrich


Kommentar