Bild db-gerecht verkleinern (PROBLEM)

lp-netzwerg

Mitglied
Hallo miteinander,
Ich hab grad so ein Problem, (Suchentaste hab ich schon lang genug benutzt :)) mit dem upload einer verkleinerten Datei in eine Datenbank. Das Problem liegt bei mir beim ersten Fall, wenn die Vorschau nicht vorhanden ist, dann soll er nämlich das Hauptbild verkleinern. So wie es jetzt ist, scheint er es auch zu machen, nur wenn ich es aus der db dann auslese kommt immer die meldung:
Resource id #3
Die gleiche Meldung kommt wenn ich mit fopen hantiere :)
Bitte newbiefreundlich antworten


PHP:
if($vorschau == "none")
{

$imagedata = GetImageSize($bild); 
$imagewidth = $imagedata[0]; 
$imageheight = $imagedata[1]; 
echo "$imagewidth x $imageheight wird ";
$test = $imagewidth/$imageheight;
$test2 = ceil(90/$test); 
echo $test2;

$dst_im=ImageCreate(90, $test2); 
$src_im=ImageCreateFromJpeg($bild); 
ImageCopyResized($dst_im,$src_im,0,0,0,0,90,$test2,ImageSX($src_im),ImageSY($src_im)); 
ImageJpeg($dst_im); 
$vorschau = $dst_im;

}
else
{
$vorschau = addslashes(fread(fopen($vorschau, "rb"), filesize($vorschau)));
}


achja gd und den rest wo man so braucht scheint auf dem server vorhanden zu sein. safemode=on
 
Newbiegerecht: Bilder gehören nicht in Datenbanken, die perfekte Bilddatenbank ist das Filesystem des Betriebssystems!

Das ist nicht performant, geradezu FAAAALSCH die bilder in eine Datenbank zu speichern.
 
hi,
was du machen kannst, ist den Bildnamen in der DB speichern.
also du hast z.b. eine Spalte path, in der der Bildname und der Pfad gespeicher wird(z.b. /home/php/page/pics/test.jpg). Dann verkleinerst du das Bild mit Hilfe von GD. Das neue speicherst du dann als test-thumb.jpg (oder test_t.jpg). U
m die Bildervorschau zu zeigen, liest du alle Felder aus der DB aus, und haengts an den Bildnamen _t, oder -thumb dran.

also so z.b. (Pseudo-Code):
Code:
oeffne Verbindung zur DB

lies alle Felder aus
haenge an den Pfad/Bildnamen _t an
haenge an den Pfad/Bildnamen_t den Dateityp an (z.b. gif, usw.)

Variable in PHP einsetzen

als Link den Pfad/Bildnamen ohne _t setzen

Um die Bilder erst mal auffn Server zu bekommen kannst du sie hochladen, Endung herausbekommen und dann in einem Verzeichnis speichern (auf dem Webserver). Dann den Pfad+Bildnamen+Typ eintragen.

Script zum uploaden:
PHP:
<?php
function setPhoto() {
	if($_FILES['pic']['size'] > 0) {
		preg_match("/(\\.\\w+)$/",
			$FILES['pic']['name'], $match);
		$typ = match[1];

		if(in_array(strtolower($typ), array(".gif", ".bmp", ".jpg", ".png", ".jpeg"))) {
			$pic = $typ;
			$path = preg_replace("/\\/[^\\/]+$/", "",
				$SERVER['PATH_TRANSLATED']) . "/pics/";
			copy($_FILES['pic']['tmp_name'],
				$path . $pic);
		}
	}
}
?>
Hab ich noch auf meiner Platte gefunden, weiss aber nicht obs geht :)
 
Zurück