Bild-Größe ändern

Alles, was PHP betrifft, kann hier besprochen werden.

Bild-Größe ändern

Postby Knight1 » 04. August 2008 15:33

Hi AF-Com,
ich möchte Flaggen-Grafiken für die Anzeige im Browser verkleinern.
Diese Liegen in der Größenordnung 500px x 300px bis 333px vor.

Das mit der reinen Gröenänderung habe ich bereits hinbekommen. Auch das Seitenverhältinis zu halten.

Allerdings wird der entsprechende Inhalt der Grafiken nicht richtig runterskalliert.

Hier mal mein Code:
Code: Select all
header("Content-type: {$flag['flag_'.$_GET['type'].'_mime']}");
header("Content-Disposition: attachment; filename={$flag['id']}.{$file_extensions[$flag['flag_'.$_GET['type'].'_mime']]}");
file_put_contents(FILE_TMP."/".UNIQID."_flag_{$_GET['type']}".$flag['id'],$flag['flag_'.$_GET['type'].'_file']);
$img_size = getimagesize(FILE_TMP."/".UNIQID."_flag_{$_GET['type']}".$flag['id']);
$new_size['height'] = "100";
$new_size['ratio'] = $img_size[0]/$new_size['height'];
$new_size['width'] = $img_size[1]/$new_size['ratio'];
$img = ImageCreate ($new_size['height'], number_format($new_size['width'],'0',',','.'));

imagecopyresampled(
$img, // Destination-IMG
imagecreatefromgif(FILE_TMP."/".UNIQID."_flag_{$_GET['type']}".$flag['id']), // Source-IMG
0, // DST_X
0, // DST_Y
0, // SRC_X
0, // SRC_Y
number_format($new_size['width'],'0',',','.'), // DST_W
$new_size['height'], // DST_H
$img_size[0], // SRC_W
$img_size[1] // SRC_H
);

imagegif ($img);
unlink(FILE_TMP."/".UNIQID."_flag_{$_GET['type']}".$flag['id']);


Die Grafiken kommen aus der DB.
Dort liegen sie vollkommen korrekt vor.
Hier mal die Orignal-Flagge: [Entfernt]
Und hier da Ergebnis: [Entfernt]


Hoffe Ihr könnt mir helfen.


Kai aka Knight1
Last edited by Knight1 on 05. August 2008 17:14, edited 1 time in total.
Image
User avatar
Knight1
 
Posts: 310
Joined: 18. October 2003 10:03
Location: Trier
Operating System: Windows 7 Ultimate x64

Postby Knight1 » 05. August 2008 12:55

Erledigt.

Habe da was mit den Größenwerten durcheinander gebracht.

Habe folgendes
Code: Select all
$new_size['ratio'] = $img_size[0]/$new_size['height'];
$new_size['width'] = $img_size[1]/$new_size['ratio'];
$img = ImageCreate ($new_size['height'], number_format($new_size['width'],'0',',','.'));


in das geändert:
Code: Select all
$new_size['ratio'] = $img_size[1]/$new_size['height'];
$new_size['width'] = $img_size[0]/$new_size['ratio'];
$dst_img = imagecreatetruecolor(number_format($new_size['width'],'0',',','.'),$new_size['height']);


Und schon funzt es.


Kai aka Knight1
Image
User avatar
Knight1
 
Posts: 310
Joined: 18. October 2003 10:03
Location: Trier
Operating System: Windows 7 Ultimate x64


Return to PHP

Who is online

Users browsing this forum: No registered users and 3 guests