Avatar billede voirsous Nybegynder
25. juni 2004 - 16:55 Der er 6 kommentarer og
1 løsning

Lave kopi af billede

Hej
jeg har fået bikset denne billede uploade kode op. (jeg har tjek på at de sidste tre bogstaver skal være - jpg, gif eller png).

$uploadfile = $_FILES['billedesti']['tmp_name'];
$uploaddir = $_SERVER["DOCUMENT_ROOT"] . "/bruger/" . $_SESSION['brugerID'] . "/" ;
$filnavn = time() . $_FILES['billedesti']['name'];
move_uploaded_file($_FILES['billedesti']['tmp_name'], $uploaddir. $filnavn);

Jeg vil have et råd, for jeg vil gerne lave tumpnails. Skal jeg lade PHP skalere billede hver gang det hentes, eller skal jeg lave en kopi af billedet der overholder tumpnails reglerne.

Jeg tror på det sidste, så hvordan kan en kode der kopiere orginal billede, skalere så width ikke er over 100px og height ikke er over 100px.
Ex. må width gerne være 78px, bare height er 100px, og omvendt.

Vh. Casper
Avatar billede lillebror Nybegynder
25. juni 2004 - 17:05 #1
Først skal du lige tjekke om du har gdlib2 til rådighed!
Avatar billede voirsous Nybegynder
25. juni 2004 - 17:09 #2
tilsyneladende ikke.
Avatar billede krydset Nybegynder
25. juni 2004 - 17:30 #3
lav en php info og kig efter flg.
og kig om du har noget lignene dte her

gd
GD Support  enabled 
GD Version  bundled (2.0.23 compatible) 
FreeType Support  enabled 
FreeType Linkage  with freetype 
GIF Read Support  enabled 
JPG Support  enabled 
PNG Support  enabled 
WBMP Support  enabled 
XBM Support  enabled
Avatar billede voirsous Nybegynder
25. juni 2004 - 17:34 #4
hov :)

GD Support     enabled
GD Version     bundled (2.0.15 compatible)
FreeType Support     enabled
FreeType Linkage     with freetype
T1Lib Support     enabled
GIF Read Support     enabled
GIF Create Support     enabled
JPG Support     enabled
PNG Support     enabled
WBMP Support     enabled
XBM Support     enabled
JIS-mapped Japanese Font Support     enabled

det ser det ud til jeg har alligevel.
Avatar billede terrak Nybegynder
25. juni 2004 - 17:37 #5
Først nogle variabler der skal sættes


$imgpath = "ditbillede.jpg";
$maxsize = 100;

Så skal du snuppe du størrelsen af billedet.

$sizes = getimagesize($imgpath);

Så $sizes[0] er nu x (width), og $sizes[1] er nu y (height).

Da du ikke vil have at det skal være mere end 100px stort, finder vi den største værdi af bredden og højden.

$biggestsize = max($sizes[0],$sizes[1]);

Så skal du have forholdet mellem den største størrelse, og $maxsize (som er 100).

$scale = $maxsize/$biggestsize;

Da du nu har forholdet mellem de to, gange du bare det tal med den mindste størrelse.

$smallestsize = min($sizes[0],$sizes[1]);

$newsize = $scale*$smallestsize;

Så nu er den største størrelse (de 100 pixels) i $maxsize, og den mindte størrelse i $newsize - og i det rigtige forhold.

Det bliver dog et problem hvis du ikke har gdlib2. Har du mulighed for at få det, skal resten af koden se sådan her ud:

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

$srcimage = ImageCreateFromJPEG($imgpath);

if (max($sizes[0],$sizes[1]) == $sizes[0]) {
$destimage = imagecreatetruecolor($maxsize, $newsize);
imagecopyresampled($destimage,$srcimage,0,0,0,0,$maxsize,$newsize,$sizes[0],$sizes[1]);
} else {
$destimage = imagecreatetruecolor($newsize, $maxsize);
imagecopyresampled($destimage,$srcimage,0,0,0,0,$newsize,$maxsize,$sizes[0],$sizes[1]);
}

imagejpeg($destimage);


--

Dette er dog ikke testet helt igennem :)
Avatar billede terrak Nybegynder
25. juni 2004 - 18:02 #6
Avatar billede voirsous Nybegynder
26. juni 2004 - 14:40 #7
mange tak,
det virker fantstisk.
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