Avatar billede danic Nybegynder
25. december 2005 - 16:58 Der er 9 kommentarer og
1 løsning

Gemme JPG thumb på serveren

Hvordan får jeg mit thumb script her til også at gemme billedet på serveren i $targetdir (det bliver kun udskrevet på skærmen pt)

<?php
// The file
$source = $_SERVER["DOCUMENT_ROOT"] . "/pics/1096_1.jpg";
$targetdir = $_SERVER["DOCUMENT_ROOT"] . "/pics/";

$maxsize = 100;

// Set a maximum height and width
$width  = $maxsize;
$height = $maxsize;

// Content type
header('Content-type: image/jpeg');

// Get new dimensions
list($width_orig, $height_orig) = getimagesize($source);

if ($width && ($width_orig < $height_orig)) {
    $width = ($height / $height_orig) * $width_orig;
} else {
    $height = ($width / $width_orig) * $height_orig;
}

// Resample
$image_p = imagecreatetruecolor($width, $height);
$image  = imagecreatefromjpeg($source);
imagecopyresampled($image_p, $image, 0, 0, 0, 0, $width, $height, $width_orig, $height_orig);

// Output
imagejpeg($image_p);
imagedestroy($image);
imageDestroy($image_p);
?>
Avatar billede hmortensen Nybegynder
25. december 2005 - 18:48 #1
imagejpeg() tar imod et filnavn, hvis filen ønskes gemt:
imagejpeg($image_p, $targetdir."billede.jpg");
Avatar billede danic Nybegynder
25. december 2005 - 19:20 #2
virker ikke :(
Avatar billede hmortensen Nybegynder
25. december 2005 - 19:29 #3
My bad, der skal lige sættes kvalitet også (angives i % og kan sagtens sættes til fx. 75 uden den skade på billedet).
imagejpeg($image_p, $targetdir."billede.jpg", 100);
Avatar billede danic Nybegynder
25. december 2005 - 19:40 #4
den gemme stadig ikke noget billede:

<?php

// The file
$source = $_SERVER["DOCUMENT_ROOT"] . "/pics/1096_1.jpg";
$targetdir = $_SERVER["DOCUMENT_ROOT"] . "/pics/";

$maxsize = 100;

// Set a maximum height and width
$width  = $maxsize;
$height = $maxsize;

// Content type
header('Content-type: image/jpeg');

// Get new dimensions
list($width_orig, $height_orig) = getimagesize($source);

if ($width && ($width_orig < $height_orig)) {
    $width = ($height / $height_orig) * $width_orig;
} else {
    $height = ($width / $width_orig) * $height_orig;
}

// Resample
$image_p = imagecreatetruecolor($width, $height);
$image  = imagecreatefromjpeg($source);
imagecopyresampled($image_p, $image, 0, 0, 0, 0, $width, $height, $width_orig, $height_orig);
imagejpeg($image_p, $targetdir."billede.jpg", 100);

// Output
imagejpeg($image_p);
imagedestroy($image);
imageDestroy($image_p);
?>
Avatar billede hmortensen Nybegynder
25. december 2005 - 20:28 #5
Du skal fjerne den anden imagejpeg() linie, og headeren også.
Avatar billede danic Nybegynder
25. december 2005 - 20:42 #6
Fandt selv fejlen:

Den seneste "mindre" sikkerhedsopdatering til php har medført at GD-libs funktion til at sende et billede til en fil eller browser fejler, hvis der skal skrives til ny fil (LÆS: filen ikke findes i forvejen)

Det udmønter sig eksempelvis i at man sagtens kan resize et billede der eksisterer i forvejen, men man kan ikke skrive til ny fil.

Man løser nemmest dette ved at skabe filen først - eksempelvis ved at tilføje 2 linier:

Code:
$fh=fopen($destinationfile,'w');
fclose($fh);

før kaldet af imageTYPE($img_dst,$destinationfile); (TYPE står for jpeg, gif, png etc)
Avatar billede hmortensen Nybegynder
25. december 2005 - 20:56 #7
Eller blot brug touch(), som vil sætte tidsstemplet på en fil, og hvis den ikke findes, vil den blive oprettet.
Avatar billede danic Nybegynder
29. december 2005 - 15:48 #8
hmortensen> du må gerne komme med et svar, for jeg vil da godt give lidt for din indsats :)
Avatar billede hmortensen Nybegynder
29. december 2005 - 15:56 #9
Kommer her :)
Avatar billede danic Nybegynder
17. oktober 2010 - 19:09 #10
hermed svar

Mvh
Dan
www.godtgave.dk
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