Moin moin,
folgendes ist mein Problem, ich Speicher in die Datenbank bilder, und will diese dann verkleinert ausgeben, im Prinzip funktioniert auch alles, nur bei manchen bilder stellt er sich krum! Wobei diese Lokal gehen. Wenn ich mir die bilder die angeblich kaput sind, per attachment downloade und mir Sie angucke funktionieren sie wieder.
Hier mein Script:
Wäre nett wenn ihr da mal drüber schauen könnt und mir evtl. mein Fehler sagt wenn ihr ihn den sieht.
MfG
Malte Frerichs
folgendes ist mein Problem, ich Speicher in die Datenbank bilder, und will diese dann verkleinert ausgeben, im Prinzip funktioniert auch alles, nur bei manchen bilder stellt er sich krum! Wobei diese Lokal gehen. Wenn ich mir die bilder die angeblich kaput sind, per attachment downloade und mir Sie angucke funktionieren sie wieder.
Hier mein Script:
PHP-Code:
<?php
function view_image($id, $thumbMaxWidth=false, $thumbMaxHeight=false)
{
include('config.inc.php');
$i = 0;
$SQLstring = "SELECT * FROM bmp_bilder where id = '".$id."'";
$ergebnis = mysql_query($SQLstring,$conection);
while($row=mysql_fetch_row($ergebnis))
{
$i++;
$image_type = $row[3];
$image_data = $row[4];
}
if($i == 0)
{
$image_data = file_get_contents('noimage.jpg');
$image_type = "image/jpeg";
}
// gd Bibliothek installiert?
if (!function_exists('ImageCreateFromString') || !$thumbMaxWidth || !$thumbMaxHeight)
{ // nein -> Bild unverändert an Browser senden
Header("Content-Type: ".$image_type);
echo $image_data;
exit();
}
$thumbMaxWidth = intval($thumbMaxWidth);
$thumbMaxHeight = intval($thumbMaxHeight);
// Bild aus Binärdaten-String erzeugen
$image = ImageCreateFromString($image_data);
// Bild-Größe ermitteln
$imgWidth = imagesx($image);
$imgHeight = imagesy($image);
if (!$scaleUp && ($imgWidth < $thumbMaxWidth) && ($imgHeight < $thumbMaxHeight))
{ // nicht vergrößern -> Bild unverändert an Browser senden
Header("Content-Type: ".$image_type);
echo $image_data;
exit();
}
// Bild verkleinern
// Bild-Seitenverhältnis bestimmen
$ratio = (float) $imgWidth / (float) $imgHeight;
// Größe des Thumbnail berechnen
if ($ratio <= 1)
{ // Breite<=Höhe -> Höhe auf MAX_H festlegen -> Breite anpassen
$thumb_h = $thumbMaxHeight;
$thumb_w = ceil($thumbMaxHeight * $ratio);
}
else
{ // Breite>Höhe -> Breite auf MAX_W festlegen -> Höhe anpassen
$thumb_w = $thumbMaxWidth;
$thumb_h = ceil($thumbMaxWidth / $ratio);
}
// Thumbnail erzeugen
$thumb = ImageCreateTrueColor($thumb_w, $thumb_h);
// Bild in Thumbnail skalieren
ImageCopyResized($thumb,$image,0,0,0,0,$thumb_w,$thumb_h,$imgWidth,$imgHeight);
// Bild an Browser senden
Header("Content-Type: image/jpeg");
ImageJPEG($thumb,'',90);
// Bild + Thumbnail löschen
ImageDestroy($image);
ImageDestroy($thumb);
exit();
}
view_image($_GET['id'],76,76);
?>
MfG
Malte Frerichs
Kommentar