Linuchs: php: Bild verkleinern

Beitrag lesen

Moin,

Veranstaltungen in Listen zeigen das verkleinerte Logo des Veranstalters oder des Events.

Bisher konnten in meinem Projekt nur hochgeladene jpg Bilder verkleinert werden, also nichts mit transparentem Hintergrund, der für Logos notwendig wäre. Das habe ich dann einzeln mit Gimp gemacht.

Habe mich gestern einen halben Tag damit bechäftigt, auch gif und png zu schrumpfen.

Einmal drüber geschlafen, erscheint es mir unlogisch, ein neues Bild mit den gewünschten Maßen zu kreiren, den (immer?) schwarzen Hintergrund transparent zu machen und dann das vorhandene große Bild dort hineinzukopieren.

Wobei dann schwarz verstümmelt wird:

png-Vorlage: Note

png-Verkleinerung: Note

So habe ich es gemacht:

// 2019-11-15
switch ( $type ) {

  case IMAGETYPE_PNG:
    // erzeuge leeres schwarzes Bild in Zielgroesse 32 Bit/Pixel
    $destin = imagecreatetruecolor( $new_width, $new_height );
    // definiere Farbe schwarz
    $black = imagecolorallocate( $destin, 0,0,0 );
    // Mache den Hintergrund transparent
    imagecolortransparent( $destin, $black );
    // zu verkleinerndes Bild laden
    $source = imagecreatefrompng( $source_pic );
    // Skalieren
    imagecopyresized  ( $destin, $source, 0, 0, 0, 0, $new_width, $new_height, $width, $height );
//      imagecopyresampled( $destin, $source, 0, 0, 0, 0, $new_width, $new_height, $width, $height );   // hat Raender um Buchstaben "berkach"
    // Ausgabe qualitaet 0 (keine Kompression) .. 9 
    imagepng( $destin, $destination_pic, 6 );
    break; 
...

Geht das einfacher und qualitativ besser?

Gruß Linuchs