N'Abend,
ich hoffe es ist dieses mal im richtigen Forum.
Ich bin gerade dabei eine Bildergalerie zu schreiben, und habe dabei folgendes Problem:
Ich habe eine Funktion mit der ich ein Bild verkleinern kann, nur leider werden durch das verkleinern des Bildes alle EXIF-Dateiinformationen entfernt. Wie kann ich die trotz verkleinern beibehalten?
Hier meine Funktion
PHP-Code:
var $types = array(1 => "GIF", 2 => "JPEG", 3 => "PNG");
function resize($new_width, $new_height, $sourcefile, $destfile, $quality, $replace=0) {
$gd_version = $this->gd_version();
$this->error = "";
if ($replace==1 && $sourcefile != $destfile)
@unlink($destfile);
if ($replace==0 && file_exists($destfile)) {
$this->error .= "resize_1";
return FALSE;
}
elseif ($new_width<=0 || $new_height<=0) {
$this->error .= "resize_2";
return FALSE;
}
elseif (!file_exists($sourcefile)) {
$this->error .= "resize_3";
return FALSE;
}
else {
$img_info = @GetImageSize($sourcefile);
if ($img_info[0] > $new_width && $img_info[1] >$new_height) {
$newprop = $this->makeRatio($img_info[0],$img_info[1],$new_width,$new_height);
$new_width = $newprop['width'];
$new_height = $newprop['height'];
$image_create_handle = "ImageCreateFrom".$this->types[$img_info[2]];
if ($gd_version >=2)
$img_dst = ImageCreateTrueColor($new_width, $new_height);
else
$img_dst = ImageCreate($new_width, $new_height);
if ($img_src = $image_create_handle($sourcefile)) {
if ($gd_version >=2)
ImageCopyResampled($img_dst, $img_src, 0, 0, 0, 0, $new_width, $new_height, ImageSX($img_src), ImageSY($img_src));
else
ImageCopyResized($img_dst, $img_src, 0, 0, 0, 0, $new_width, $new_height, ImageSX($img_src), ImageSY($img_src));
$image_handle = "Image".$this->types[$img_info[2]];
$image_handle($img_dst, $destfile, $quality);
ImageDestroy($img_src);
ImageDestroy($img_dst);
}
if (file_exists($destfile))
return TRUE;
else {
$this->error .= "resize_4";
return FALSE;
}
}
else
return FALSE;
}
}