webForumDet fria alternativet

Göra thumbnails med GD

7 svar · 389 visningar · startad av asmodie

asmodieMedlem sedan jan. 2004501 inlägg
#1

Är det någon på forumet som har koll på hur man rezisar bilder med GD. En polare som undrar, som skulle behöva lite hjälp med det. Jag postar problemet så fort jag får det i mailen av honom.

Problemet är i alla fall att PHP visar en massa teken i stället för bilder.

DufferMedlem sedan mars 2003429 inlägg
#2

Kontrollera så att det inte finns några mellanslag som kan skrivas ut på sidan.

t.ex.:

----------------------------- SIDSTART

<?PHP
KOD
?>

ovan är fel

----------------------------- SIDSTART
<?PHP
KOD
?>

spangoMedlem sedan juni 20008 205 inlägg
#3

Kan vara att han inte sätter rätt content-type också...

header('Content-Type: image/gif'); // eller png eller jpeg
asmodieMedlem sedan jan. 2004501 inlägg
#4

Så här är koden. varför kan den tänkas generera skräptecken i stället för en bild?

SkarreMedlem sedan apr. 20012 427 inlägg
#5

Att bara skriva ut en bild med "imagejpeg()" rakt ut bland annat innehåll kan väl ändå inte fungera!? Lägg koden som genererar bilden i en separat fil och länka till den.

Exempel:

<img src="bildskript.php?id=x" alt="" />
SeizaMedlem sedan dec. 200313 inlägg
#6

Tja det är jag som inte får det hela att funka. Nu har jag dock insett att bilden ska ändra storlek innan jag lägger in den i databasen, lite smartare kanske. Men som nybörjare på PHP vet jag inte riktigt hur jag ska gå tillväga. Att ladda upp bilden är inga problem, svårigheten som jag ser det är att skala om den innan. Koden jag jobbar på just nu:

// Kollar om någon fil har laddats upp
if (is_uploaded_file($_FILES['bild']['tmp_name'])) {
   // Sparar det temporära namnet på filen i en variabel
   $tmpnamn = $_FILES['bild']['tmp_name'];

   // Sparar det riktiga namnet på filen
   $namn = $_FILES['bild']['name'];

	$im_src = imagecreatefromjpeg('X');  //Om detta är ett möjligt tillvägagångssätt, vad skriver jag då vid X?
	$src_w = imagesx($im_src);
	$src_h = imagesy($im_src); 

	$im_dst = imagecreate(200,150);
	
	imagecopyresized($im_dst, $im_src, 0, 0, 0, 0, 200, 150, $src_w, $src_h);

   // Flyttar den temporära filen till mappen mapp och byter till rätt filnamn
   move_uploaded_file($tmpnamn, "/usr/local/webhome/php_rb22ah/lab4_2/bilder/$im_dst");

Tacksam för lite guruhjälp.. :)

tronezMedlem sedan juli 2001728 inlägg
#7

jag löste ditt problem med att först ladda upp bilden, sen skala den precis efter uppladdningen samt spara över den gamla filen med den nya skalade bilden

PeddaMedlem sedan juni 20006 032 inlägg
#8

Gäller det för GD1 eller GD2?

Postar lite kod från ett av mina uppladdningsskript:

// Ladda upp ny bild
if ($_POST['fil'] == Ja){
$mapp = "../thumbs/";
$mapp2 = "../foton/";

	// Ta bort STORA bokstäver
	$_FILES["file"]["name"] = strtolower($_FILES["file"]["name"]);
	
	// Ta bort mellanslag
	$_FILES["file"]["name"] = str_replace(' ', '_', $_FILES["file"]["name"]);
	
	// Ta bort å
	$_FILES["file"]["name"] = str_replace('å', 'a', $_FILES["file"]["name"]);
	
	// Ta bort ä
	$_FILES["file"]["name"] = str_replace('ä', 'a', $_FILES["file"]["name"]);
	
	// Ta bort ö
	$_FILES["file"]["name"] = str_replace('ö', 'o', $_FILES["file"]["name"]);
	
if (file_exists($mapp.$_FILES['file']['name'])) {
   	header("location: galleri.php?Uppladdad=Kopia");
	exit;
}
	if(!empty($_FILES['file']['name'])) { 
	$file = $_FILES['file']; 
	$storlek = getimagesize($_FILES['file']['tmp_name']);
	$nybredd = 90;
	$nyhojd = 90;
	$nybredd2 = 600;
	$nyhojd2 = 600;
	// kolla filändelsen  
	$filandelse = explode('.',$file['name']); 
	$sort = count($filandelse) - 1; 
	$so = $filandelse[$sort];
	// Allowed filetypes
	if ($so != 'jpg'){   
		// Fel filtyp 
		header("location: galleri.php?Uppladdad=Nej");
		exit;
	}
	// skapa tumnagel
	if (($storlek[0] - $nybredd) >= ($storlek[1] - $nyhojd)) {
		$bildbredd = $nyhojd;
		$bildhojd = ($nybredd/$storlek[0])*$storlek[1];
	} else {
		$bildhojd = $nyhojd;
		$bildbredd = ($bildhojd/$storlek[1])*$storlek[0]; 
	}
	$bild_kalla = imagecreatefromjpeg($file['tmp_name']);
	
	// GD2
	$bild_skapa = imagecreatetruecolor($bildbredd, $bildhojd);
	imagecopyresampled ($bild_skapa, $bild_kalla, 0, 0, 0, 0, $bildbredd, $bildhojd, $storlek[0], $storlek[1]);
	
	// GD1
	//$bild_skapa = imagecreate($bildbredd, $bildhojd);
	//imagecopyresized ($bild_skapa, $bild_kalla, 0, 0, 0, 0, $bildbredd, $bildhojd, $storlek[0], $storlek[1]);
	
	imagejpeg ($bild_skapa, $mapp.$file['name'], 100);
	imagedestroy ($bild_skapa);
	// skapa stor bild
	if (($storlek[0] - $nybredd2) >= ($storlek[1] - $nyhojd2)) {
		$bildbredd = $nyhojd2;
		$bildhojd = ($nybredd2/$storlek[0])*$storlek[1];
	} else {
		$bildhojd = $nyhojd2;
		$bildbredd = ($bildhojd/$storlek[1])*$storlek[0]; 
	}
	$bild_kalla = imagecreatefromjpeg($file['tmp_name']);
	
	// GD2
	$bild_skapa = imagecreatetruecolor($bildbredd, $bildhojd);
	imagecopyresampled ($bild_skapa, $bild_kalla, 0, 0, 0, 0, $bildbredd, $bildhojd, $storlek[0], $storlek[1]);
	
	// GD1
	//$bild_skapa = imagecreate($bildbredd, $bildhojd);
	//imagecopyresized ($bild_skapa, $bild_kalla, 0, 0, 0, 0, $bildbredd, $bildhojd, $storlek[0], $storlek[1]);
	
	imagejpeg ($bild_skapa, $mapp2.$file['name'], 100);
	imagedestroy ($bild_skapa);
	header("Location: galleri.php?Uppladdad=Ja");
	exit;
	}
}
?>
138 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
135 ms — hämta tråd, inlägg och bilagor (db)