Frage

Ich war fasziniert von diese Diskussion der Bildskalierung und anschließend herausgefunden Dass der PHP-Code, der ich verwende, um Miniaturansichten aus hochgeladenen Bildern zu erstellen, leidet an demselben Problem. Ich entschied mich dafür, den PHP-Fix in der Nähe des Bodens zu versuchen (Umwandlung von Gamma von 2,2 auf 1,0, die Größe des Bildes umzuwandeln, das Bild der Gamma-Rückseite von 1,0 auf 2.2 umzuwandeln). Dies funktioniert, um das in dem Artikel angegebene Thema zu lösen, jedoch hat diese Modifikation des Codes jedoch den unglücklichen Nebeneffekt des Klopfens von PNG-Alphakanal-Transparenz.

Hier ist der Code, den ich mit der Gammakorrektur hat.

generasacodicetagpre.

Jeder weiß, wie Sie die Größe des Bildes ändern, um den Gammakorrekturtrick zu verwenden, während Sie die Alphakanal-Transparenz des Originalbildes aufrechterhalten?

Bearbeiten

Beispielbilder:

    .
  1. Originaldatei - PNG mit Alphakanal-Transparenz
  2. Resserisierte Datei mit den Funktionsanrufen von ImageGammAcRorrect () kommentiert
  3. Resserisierte Datei mit den Funktionsaufrufen von ImageGammArCorrect () in Position
  4. Sie können sehen, dass die Transparenz in Ordnung ist, bis Sie versuchen, das Gamma zu korrigieren. (Der einfachste Weg, um die Transparenz zu sehen, besteht darin, den Absatz-Tag inspizieren, das um die Bilder gewickelt ist, und fügte einen Hintergrund hinzu: schwarz; in ihr Stil Attribut über Firebug oder ähnliches.)

    Originalbild http://ender.hosting.emarketsouth.com/images /test-image.png . keine Gamma-Korrektur http://ender.hosting.emarketSouth .com / Bilder / Test-Image-Größe-no-gamma.png Gamma korrigiert - keine Transparenz http://ender.hosting.emarketsouth.com /images/test-image-ressized.png

War es hilfreich?

Lösung

Hier ist ein anderer Code, der funktioniert. Grundsätzlich trennt es den Alphakanal, wodurch das Bild mit Gamma-Richtigergrößen geändert wird, den Alpha-Kanal ohne gamma korrekt ordnen, und kopiert dann den Alphakanal an das mit Gamma-Richtige erstellte Bild.

Meine Vermutung ist, dass die ImageGammAcorrect () -Funktion einen Fehler hat. Vielleicht gilt Gamma nur für RGB und GD versucht, auch dieselbe Berechnung zum Alphakanal zu tun? Farbheftheorie ist nicht meine Forte.

Jedenfalls, hier ist der Code. Leider konnte ich keinen besseren Weg finden, um die Kanäle zu trennen, als die Pixel eins-nach-One-umzusetzen. Na ja, ...

generasacodicetagpre.

Ersetzen Sie harte codierte Werte mit Variablen natürlich ... und hier ist das Ergebnis, das ich mit Ihrem Bild und meinem Code verwende:

 Größe des Bildes

(Quelle: jejik.com )

Andere Tipps

Es gibt ein Problem mit imagecopyresampliertem () und der Transparenz.Werfen Sie einen Blick auf Dieser Kommentar zu php.net für amögliche Lösung.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top