ich stehe leider auf dem Schlauch und weiß nicht so recht weiter.
Der Shop kommt ja mit png Bildern nicht richtig klar.
Ich hole mir Artikelbilder der Hersteller direkt per PHP Script ich habe aber jetzt das Problem das eineige Bilder neuerdings auch png sind. Gebeben sind Bild URL der Artikelbilder.
Ich müsste also Prüfen ob das Bild ein png ist wenn ja dann in jpg Wandeln und local auf dem recher speichern.
Wenn du das Bild nur umwandeln willst, brauchst du kein temporäres Bild, und außerdem kannst du mit imagejpeg das Bild auch gleich schreiben ohne es auszugeben. Dann sollten die transparenten Bereiche auch weiß werden:
der Übergang von Bild zu Hintergrund ist jetzt extrem “treppig” geworden. Gerade Kanten die schräg verlaufen sehen jetzt aus wie Treppenstufen (etwas Übertrieben).
100 als Qualität macht die Bilder unnötig groß, die Kanten werden dadurch nicht schöner. Was hast du denn als Ursprungsbilder genommen? Wenn du die Bilder aus dem Shop genommen hast, die sind ja schon treppig, da hilft die nachträgliche Umwandlung in jpg nicht mehr.
Du müsstest ausgehend z.B. von den Zoombildern die Bilder für die Detailseite und die Thumbnails neu erstellen (mit imagecopyresampled nicht imagecopyresized).
Am einfachsten wäre es doch die Schnittstelle anzupassen so dass auch pngs funktionieren.
Gibt es Optionen in PHP die die Ausgabe verbessern?
Ich würde gern bei PHP bleiben alternativ habe ich mich dann mit externen Programmen beschäftigt. Mein Referenzbild war das hier.
Ich sehe was du meinst. Warum machst du das eigentlich immer noch mit ob und fwrite, imagejpeg kann doch direkt ins Dateisystem schreiben?
Die Zacken kannst du vermeiden wenn du doch wie in deinem ursprünglichen Code das Bild in ein zweites kopierst. Anscheinend wird sonst die Transparenz nicht richtig umgesetzt. Den Hintergrund bekommst du weiß indem du ein weißes Zielbild verwendest:
Funktioniert Dank Dir.
Auf die Idee muß man erst mal kommen in ein weißes Bild zu schreiben.
Eigentlich könnte man ja so auch sein Wasserzeichen einbauen wenn man wollte.