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
?>
7 svar · 389 visningar · startad av asmodie
Ä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.
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
?>
Kan vara att han inte sätter rätt content-type också...
header('Content-Type: image/gif'); // eller png eller jpeg
Så här är koden. varför kan den tänkas generera skräptecken i stället för en bild?
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="" />
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.. :)
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
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;
}
}
?>