Avatar billede funkyloonie Nybegynder
04. juni 2004 - 13:59 Der er 17 kommentarer og
1 løsning

Resizing af billede

Jeg vil forsøge mig at resize et billede. Understående virker men billedet som laves bliver blot et udklip af det eksisterende billede og ikke det eksisterende billede i et mindre format. Hvad gør jeg galt???

$img = getimagesize("../phpupload/small.jpg");
echo "Original jpg: " . $img[0] . " " . $img[1] . " " . $img[2] . " " . $img[3] . "<br>";

$source = imagecreatefromjpeg("../phpupload/small.jpg");
$newimg = imagecreate($img[0]/2, $img[1]/2);
imagecopyresized($newimg, $source, 0, 0, 0, 0, $img[0], $img[1], $img[0]/2, $img[1]/2);
imagejpeg($newimg, '../phpupload/new.jpg', 100);

$img = getimagesize("../phpupload/new.jpg");
echo "Ny jpg: " . $img[0] . " " . $img[1] . " " . $img[2] . " " . $img[3] . "<br><br>";
Avatar billede funkyloonie Nybegynder
04. juni 2004 - 14:05 #1
Dvs. jeg vil ikke klippe noget ud af billedet med blot resize billedet.
Avatar billede michael_stim Ekspert
04. juni 2004 - 14:08 #2
Den funktion der findes i php er ikke noget värd, der bliver ekstremt dårlig kvalitet på dem. Jeg havde uploadet to billeder et lille og et stort. Hvis det altså er thumbnails du skal lave.
Avatar billede funkyloonie Nybegynder
04. juni 2004 - 14:12 #3
det er det jeg vil. gider du vise mig den? har også hørt den er dårlig men vil stadig gerne prøve den.
Avatar billede Slettet bruger
04. juni 2004 - 14:16 #4
Jeg synes nu PHP resizer ganske nydeligt, jeg brguer noget der ligner nedenstående:

$upload_bibliotek = "mine_billeder";

$fra = $_FILES["img"]["tmp_name"];
$oprindeligtnavn = $_FILES["img"]["name"];

$til1 = $upload_bibliotek . "/" . $_FILES["img"]["name"];
$til2 = $upload_bibliotek . "/thumbnails/" . $_FILES["img"]["name"];


$size = getimagesize($_FILES["img"]['tmp_name']);

//Udregn skaleringsforholdet på thumb, her skal 150 rettes til den ønskede bredde
$new_w = 150;
$division = $size[0] / $new_w;
$new_h = $size[1] / $division;

//Lav et nyt billede så vi kan komme igang
$dst_img = ImageCreateTrueColor($size[0],$size[1]);

//Lav et nyt billede til thumbnail så vi kan komme igang
$dst_img2 = ImageCreateTrueColor($new_w,$new_h);




Find ud af filformat, hvor $_FILES["img"] er navnet for input feltet i din form
if($_FILES["img"]["type"] == "image/jpeg" || $_FILES["img"]["type"] == "image/pjpeg" || $_FILES["img"]["type"] == "image/jpg") {
$src_img = ImageCreateFromJpeg($_FILES["img"]['tmp_name']);
} elseif($_FILES["img"]["type"] == "image/x-png" || $_FILES["img"]["type"] == "image/png") {
$src_img = ImageCreateFromPng($_FILES["img"]['tmp_name']);
} elseif($_FILES["img"]["type"] == "image/gif") {
$src_img = ImageCreateFromGif($_FILES["img"]['tmp_name']);
}



//Smid noget indhold i billedet
ImageCopyResampled($dst_img,$src_img,0,0,0,0,$size[0],$size[1],ImageSX($src_img),ImageSY($src_img));

//Smid noget indhold i, og resize thumbnail
ImageCopyResampled($dst_img2,$src_img,0,0,0,0,$new_w,$new_h,ImageSX($src_img),ImageSY($src_img));



//*nix-path til filens endelige placering
$filename1 = $til1;

//*nix-path til thumbnailens endelige placering
$filename2 = $til2;



//Udfør det hele på billedet
if($_FILES["img"]["type"] == "image/jpeg" || $_FILES["img"]["type"] == "image/pjpeg" || $_FILES["img"]["type"] == "image/jpg") {
ImageJpeg($dst_img, $filename1);
} elseif($_FILES["img"]["type"] == "image/x-png" || $_FILES["img"]["type"] == "image/png") {
ImagePng($dst_img, $filename1);
} elseif($_FILES["img"]["type"] == "image/gif") {


if(function_exists("move_uploaded_file")) {
move_uploaded_file($fra, $til1);
} else {
copy($fra, $til1);
}


}


//Udfør det hele på thumbnailen
if($_FILES["img"]["type"] == "image/jpeg" || $_FILES["img"]["type"] == "image/pjpeg" || $_FILES["img"]["type"] == "image/jpg") {
ImageJpeg($dst_img2, $filename2);
} elseif($_FILES["img"]["type"] == "image/x-png" || $_FILES["img"]["type"] == "image/png" || $_FILES["img"]["type"] == "image/gif") {
ImagePng($dst_img2, $filename2);
}
Avatar billede Slettet bruger
04. juni 2004 - 14:17 #5
linien Find ud af filformat, hvor $_FILES["img"] er navnet for input feltet i din form
skal lige have // foran for ikke at give fejl :/
Avatar billede michael_stim Ekspert
04. juni 2004 - 14:25 #6
Mine thumbs bliver af denne kvalitet:
http://www.stimose.se/thumb_IM000352.jpg
Og jeg har både prövet imagecopyresized() og ImageCopyResampled(), uden noget godt resultet.
Avatar billede Slettet bruger
04. juni 2004 - 14:30 #7
Så gør du noget forkert.

Jeg har herunder lagt koden ind til et fuldt fungerende uploadscript:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>
<head>
    <title>Untitled</title>
</head>

<body>
<?

if(isset($_REQUEST['send'])) {

$upload_bibliotek = "mine_billeder";

$fra = $_FILES["img"]["tmp_name"];
$oprindeligtnavn = $_FILES["img"]["name"];

$til1 = $upload_bibliotek . "/" . $_FILES["img"]["name"];
$til2 = $upload_bibliotek . "/thumbnails/" . $_FILES["img"]["name"];


$size = getimagesize($_FILES["img"]['tmp_name']);

//Udregn skaleringsforholdet på thumb, her skal 150 rettes til den ønskede bredde
$new_w = 150;
$division = $size[0] / $new_w;
$new_h = $size[1] / $division;

//Lav et nyt billede så vi kan komme igang
$dst_img = ImageCreateTrueColor($size[0],$size[1]);

//Lav et nyt billede til thumbnail så vi kan komme igang
$dst_img2 = ImageCreateTrueColor($new_w,$new_h);




//Find ud af filformat, hvor $_FILES["img"] er navnet for input feltet i din form
if($_FILES["img"]["type"] == "image/jpeg" || $_FILES["img"]["type"] == "image/pjpeg" || $_FILES["img"]["type"] == "image/jpg") {
$src_img = ImageCreateFromJpeg($_FILES["img"]['tmp_name']);
} elseif($_FILES["img"]["type"] == "image/x-png" || $_FILES["img"]["type"] == "image/png") {
$src_img = ImageCreateFromPng($_FILES["img"]['tmp_name']);
} elseif($_FILES["img"]["type"] == "image/gif") {
$src_img = ImageCreateFromGif($_FILES["img"]['tmp_name']);
}



//Smid noget indhold i billedet
ImageCopyResampled($dst_img,$src_img,0,0,0,0,$size[0],$size[1],ImageSX($src_img),ImageSY($src_img));

//Smid noget indhold i, og resize thumbnail
ImageCopyResampled($dst_img2,$src_img,0,0,0,0,$new_w,$new_h,ImageSX($src_img),ImageSY($src_img));



//*nix-path til filens endelige placering
$filename1 = $til1;

//*nix-path til thumbnailens endelige placering
$filename2 = $til2;



//Udfør det hele på billedet
if($_FILES["img"]["type"] == "image/jpeg" || $_FILES["img"]["type"] == "image/pjpeg" || $_FILES["img"]["type"] == "image/jpg") {
ImageJpeg($dst_img, $filename1);
} elseif($_FILES["img"]["type"] == "image/x-png" || $_FILES["img"]["type"] == "image/png") {
ImagePng($dst_img, $filename1);
} elseif($_FILES["img"]["type"] == "image/gif") {


if(function_exists("move_uploaded_file")) {
move_uploaded_file($fra, $til1);
} else {
copy($fra, $til1);
}


}


//Udfør det hele på thumbnailen
if($_FILES["img"]["type"] == "image/jpeg" || $_FILES["img"]["type"] == "image/pjpeg" || $_FILES["img"]["type"] == "image/jpg") {
ImageJpeg($dst_img2, $filename2);
} elseif($_FILES["img"]["type"] == "image/x-png" || $_FILES["img"]["type"] == "image/png" || $_FILES["img"]["type"] == "image/gif") {
ImagePng($dst_img2, $filename2);
}


}

?>

<form name="form1" enctype="multipart/form-data" method="post" action="test5.php">
<input type="hidden" name="send" value="ok">
<input type="file" name="img" class="file" style="width:250px"><input type="submit" class="knap"  value="Upload valgt billede">
</form>

</body>
</html>
Avatar billede michael_stim Ekspert
04. juni 2004 - 14:31 #8
Skal teste det, tror nu ikke det udgör nogen forskel ;o)
Avatar billede Slettet bruger
04. juni 2004 - 14:34 #9
Det tror jeg ;)
Avatar billede michael_stim Ekspert
04. juni 2004 - 14:43 #10
http://www.stimose.se/mine_billeder/thumbnails/IM000352.JPG
Ja det gjorde det minsandten ;o)
Synes jeg har gjordt det samme som dig. Hmmm, må nok kikke min kode igennem og sammenligne den med din..
Avatar billede Slettet bruger
04. juni 2004 - 14:46 #11
:D

Det var noget bedre billede. Måske du ikke bruger ImageCreateTrueColor men kun ImageCreate?
Avatar billede michael_stim Ekspert
04. juni 2004 - 14:51 #12
Jeps der var forskellen, så slipper jeg for at lede mere. Opretter lige et spörgsmål til dig som tak for hjälpen.
Og funkyloonie, undskyld spamming på din tråd.
Avatar billede funkyloonie Nybegynder
04. juni 2004 - 14:52 #13
el_barto det virker helt perfekt. du slipper ikke for points denne gang!! tak for hjælpen!
Avatar billede Slettet bruger
04. juni 2004 - 15:08 #14
hehe...ej ok, så tager jeg gerne de point :)

Glad for at kunne hjælpe!
Avatar billede funkyloonie Nybegynder
04. juni 2004 - 17:09 #15
har lige et opfølgende spg. omkring gif'er. Min server siger at Imagegif(...) ikke findes(hvilket den gør ifølge php.net...). Jeg kan se du ikke bruer den og at du det ene sted bruger png istedet. Det virker dog ikke for mig. Jeg skal måske kopiere den som du også gør?
Avatar billede Slettet bruger
04. juni 2004 - 17:27 #16
Problemet er at GIF support løber ind i et problem omkring rettighederne til gif-formatet.

Nyeste PHP version tillader dog at du henter et gif-billede ind, og derefter laver det om til png.
Avatar billede funkyloonie Nybegynder
04. juni 2004 - 17:38 #17
ok. tak igen
Avatar billede cardinale Nybegynder
23. juli 2004 - 22:04 #18
el_barto jeg har problemer med dit script der...

http://www.steeltank.dk/woo/test.php

Får en mængde fejlmeddelselser... Gid du kunne hjælpe :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester