Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

PHP: Farbverzerrungen beim Verkleinern von Bildern

Empfohlene Antworten

Veröffentlicht

Moin!

Ich nutze die gd-Lib zum Verkleinern von Bildern zwecks Anzeige als Thumbnails. Leider hab' ich dabei seltsamerweise das Problem, daß die Farben in den Thumbnails häufig ziemlich verzerrt sind. Wenn z.B. ein Bild dabei ist, auf dem ganz viel blau drauf ist, besteht das Thumbnail fast nur noch aus Blautönen.

Weiß jemand, woran das liegen kann und vor allem, wie ich das verhindern kann?

Thx schonmal!

dein source?

Ich denke die Stichworte lauten

Imagecreatetruecolor

und beim verkleinern

resample statt resize...

Ab der GD-Version, die bei php4.3x drin ist, mußt du beim erzeugen eines bildes imagecreatetruecolor statt imagecreate verwenden...

dann klappts auch mit dem Nachb.... ähm... den Farben... ;)

  • Autor

Achso, sorry, hatte garnicht dran gedacht ;)


$size = getimagesize($bild);
$breite = $size[0];
$hoehe = $size[1];

if ($breite > 200):
$neueBreite = 200;
$neueHoehe = intval($hoehe*$neueBreite/$breite);
else:
$neueBreite = $breite;
$neueHoehe = $hoehe;
endif;

if ($size[2] == 2):
// JPG
$altesBild = ImageCreateFromJPEG($bild);
$neuesBild = ImageCreate($neueBreite,$neueHoehe);
ImageCopyResized($neuesBild,$altesBild,0,0,0,0,$neueBreite,$neueHoehe,$breite,$hoehe);
ImageJPEG($neuesBild);
elseif ($size[2] == 3):
// PNG
$altesBild = ImageCreateFromPNG($bild);
$neuesBild = ImageCreate($neueBreite,$neueHoehe);
ImageCopyResized($neuesBild,$altesBild,0,0,0,0,$neueBreite,$neueHoehe,$breite,$hoehe);
ImagePNG($neuesBild);
endif;
[/php]

Damit erstelle ich die Thumbs immer on the fly - ich weiß, ist nicht grad die schlaueste Möglichkeit, aber das Ganze sollte erstmal funktionieren. An der Funktion zum Verkleinern sollte sich ja eigentlich nichts ändern, wenn ich das Ganze nur einmal machen und die Datei dann speichern würde...

  • Autor
Original geschrieben von Net-srac

Ich denke die Stichworte lauten

Imagecreatetruecolor

und beim verkleinern

resample statt resize...

Ab der GD-Version, die bei php4.3x drin ist, mußt du beim erzeugen eines bildes imagecreatetruecolor statt imagecreate verwenden...

dann klappts auch mit dem Nachb.... ähm... den Farben... ;)

Das klingt gut - hatte mir schon gedacht, daß irgendwie die Farben reduziert werden - allerdings kam's mir auch komisch vor, da ich ja nur mit JPG bzw. PNG arbeite.

Werde das mal probieren! Wie lautet die Funktion zum Resamplen denn genau? ImageCopyResampled?

jap, imagecopyresampled

Nochmal zu imagecreatetruecolor

laut php.net

Anmerkung: This function was added in PHP 4.0.6 and requires GD 2.0.1 or later.

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.