Zwischen diesen beiden GDlib-Funktionen gibt es einige Unterschiede, die oft gar nicht beachtet werden.
An dieser Stelle möchte ich darauf mal eingehen.
ImageCreate
Erstellt mittels Breite und Höhe ein neues Bild im Speicher.
Dabei ist allerdings die Farbanzahl auf 256-Farben reduziert.
Das kann Vor- und Nachteile haben.
Vorteile:
- da hier nur 256-Farben zur Verfügung stehen, ist der Speicherbedarf wesentlich geringer
- zum Erstellen von GIF-Bilder besser geeignet
Nachteile:
- Farben gehen verloren, wenn man PNG oder JPEG-Bilder speichern möchte
- im Zusammenhang mit Thumbnail-Funktionen ungeeignet bei ImageCreateFromPNG oder ImageCreateFromJPEG
- Farben werden verfälscht, wenn diese nicht im 256-Farben-Spektrum liegen
ImageCreateTrueColor
Erstellt auch eine neues Bild im Speicher, allerdings in TrueColor mit 16,7 Mio Farben.
Der Speicherbedarf ist hier wesentlich höher, da die GDlib hier mit 40-bit Farbtiefe arbeitet.
Vorteile:
- 16,7 Mio Farben
- Ideal für PNG und JPEG geeignet
Nachteile:
- mehr Speicherbedarf
Damit man den Speicherbedarf nachvollziehen kann, mal ein Beispiel zum selber testen:
<?php
function GetMem( $text ) {
return '<p>'.$text.' : '.sprintf("%.3lf", memory_get_usage()/1024/1024 ). ' MB im Speicher </p>';
}
$image = ImageCreate(2000, 2000);
echo GetMem('Speicherbedarf bei ImageCreate');
ImageDestroy($image);
$image = ImageCreateTrueColor(2000, 2000);
echo GetMem('Speicherbedarf bei ImageCreateTrueColor');
ImageDestroy($image);
?>