07. februar 2005 - 23:40
Der er
27 kommentarer og 1 løsning
resize billede, sætte max højde OG brede
Har dette, og det virker også fint men jeg vil gerne have så jeg kan sige højden må MAX være det og brede må max være det... nu virker det jo bare så at det samme tal er max for både højde og brede... jeg ville gerne have at x var 300 og y 250 $source = "../temp/$billed"; $target = "../bigpic/$billed"; $size = 250; Thumb($source, $target, $size); function Thumb($sourcefile, $targetfile, $size) { $source_id = imageCreateFromJPEG($sourcefile); $source_x = imagesx($source_id); $source_y = imagesy($source_id); $delta = $size/max($source_x,$source_y); $dest_x = round($source_x*$delta); $dest_y = round($source_y*$delta); $target_id=imagecreatetruecolor($dest_x, $dest_y); imagecopyresampled($target_id,$source_id,0,0,0,0, $dest_x,$dest_y, $source_x,$source_y); imagejpeg($target_id,$targetfile, 100); }
Annonceindlæg fra Lector
07. februar 2005 - 23:51
#1
$source = "../temp/$billed"; $target = "../bigpic/$billed"; $sizex = 300; $sizey = 250; Thumb($source, $target, $sizex, $sizey); function Thumb($sourcefile, $targetfile, $xsize, $ysize) { $source_id = imageCreateFromJPEG($sourcefile); $source_x = imagesx($source_id); $source_y = imagesy($source_id); $deltax = $size/$source_x; $deltay = $size/$source_y; $dest_x = round($source_x*$deltax); $dest_y = round($source_y*$deltay); $target_id=imagecreatetruecolor($dest_x, $dest_y); imagecopyresampled($target_id,$source_id,0,0,0,0, $dest_x,$dest_y, $source_x,$source_y); imagejpeg($target_id,$targetfile, 100); } dette burde vel virke, men forvrider nok billedet
08. februar 2005 - 07:43
#2
der skal kun bruges een delta værdi som de originale værdier så skal ganges med.
gf
Nybegynder
08. februar 2005 - 08:03
#3
Aldeles utestet $source = "../temp/$billed"; $target = "../bigpic/$billed"; $sizex = 300; $imagesize = getimagesize($target); $forhold = ($imagesize[1] / ($imagesize[0]); Thumb($source, $target, $sizex, ($sizex * $forhold)); function Thumb($sourcefile, $targetfile, $xsize, $ysize) { $source_id = imageCreateFromJPEG($sourcefile); $source_x = imagesx($source_id); $source_y = imagesy($source_id); $deltax = $size/$source_x; $deltay = $size/$source_y; $dest_x = round($source_x*$deltax); $dest_y = round($source_y*$deltay); $target_id=imagecreatetruecolor($dest_x, $dest_y); imagecopyresampled($target_id,$source_id,0,0,0,0, $dest_x,$dest_y, $source_x,$source_y); imagejpeg($target_id,$targetfile, 100); }
08. februar 2005 - 10:44
#4
den skal jo ikke forvride billedet, det kan jeg jo ikke bruge til noget.... GF jeg kan ikke se man indtille både X og Y i dit eksempel
gf
Nybegynder
08. februar 2005 - 11:11
#5
ok men er det så ikke bare plazm's løsning du skal bruge? Jeg forstod det sådan at du ville have en fast værdi og den anden side skulle udregnes efter denne. Kan du forklare lidt mere præcist? Mvh gf
gf
Nybegynder
08. februar 2005 - 11:23
#6
prøv lige med $source = "../temp/$billed"; $target = "../bigpic/$billed"; $xsize = 300; $imagesize = getimagesize($target); $forhold = ($imagesize[1] / ($imagesize[0]); $ysize = $xsize * $forhold; Thumb($source, $target, $xsize, $ysize); function Thumb($sourcefile, $targetfile, $xsize, $ysize) { $source_id = imageCreateFromJPEG($sourcefile); $source_x = imagesx($source_id); $source_y = imagesy($source_id); $deltax = $size/$source_x; $deltay = $size/$source_y; $dest_x = round($source_x*$deltax); $dest_y = round($source_y*$deltay); $target_id=imagecreatetruecolor($dest_x, $dest_y); imagecopyresampled($target_id,$source_id,0,0,0,0, $dest_x,$dest_y, $source_x,$source_y); imagejpeg($target_id,$targetfile, 100); } Karma: Ingen eller færre end 3 Kommentar: clausga 08/02-2005 10:44:58 den skal jo ikke forvride billedet, det kan jeg jo ikke br
08. februar 2005 - 14:41
#7
altså breden må MAX være 300 og højden MAX 215... problemet er nu den max bliver 215 nu i breden også..., jeg ved ikke hvordan jeg skal forklare det... Billedet skal bevare sine dimentioner... altså billede der skal ud må være max 300*215 pixel....
08. februar 2005 - 14:53
#8
hvis nu et billede er 400*50 kan den jo godt lave det ned til 300 i breden derfor vil den jo stadig ikke nå over de 215.... fordi jeg gerne vil have det sådan er fordi jeg så kan få billedet lidt større fordi det må være 300 i breden
08. februar 2005 - 15:28
#9
noget ala dette <?php $max_w = 300; $max_h = 250; $filename = 'whatever.jpg'; $rc=getimagesize($filename); $source_x=$rc[0]; $source_y=$rc[1]; $ratio = $source_x / $source_y; $height = $max_h; $width = $max_h * $ratio; if( $width > $max_w ) { $width = $max_w; $height = $max_w / $ratio; } echo "<img src=$filename width=$width height=$height>"; ?>
08. februar 2005 - 15:32
#10
bojo det skal resize så de ligger i en mappe og ER resized.... billederne må jo fx godt være 300*215 250*215 300*165 MEN IKKE FX. 300*260 356*200
08. februar 2005 - 16:36
#11
<?php $max_w = 300; $max_h = 250; $dir = "."; $prefix = "thb_"; if( $handle = opendir( $dir ) ) { while( false !== ( $file = readdir( $handle )) ) { if( strtolower(substr( $file, -4)) == ".jpg" ) { rez($file, $prefix, $max_h, $max_w); } } closedir( $handle ); } function rez( $filename, $prefix, $max_h, $max_w ) { $rc=getimagesize($filename); $source_x=$rc[0]; $source_y=$rc[1]; $ratio = $source_x / $source_y; $height = $max_h; $width = $max_h * $ratio; if( $width > $max_w ) { $width = $max_w; $height = $max_w / $ratio; } $source_id = imageCreateFromJPEG($filename); $target_id=imagecreatetruecolor($width, $height); imagecopyresampled($target_id,$source_id,0,0,0,0, $width,$height, $source_x,$source_y); imagejpeg($target_id,$prefix.$filename, 100); echo "<img src='${prefix}${filename}'> $width $height"; } ?>
08. februar 2005 - 18:01
#12
laver den alle filerne om i en bestemt mappe ? det skal jo kun være en fil af gangen... hvordan får jeg den til det ??
08. februar 2005 - 18:41
#13
Den skal hente billede fra en mappe og lægge det i en anden lige som her $source = "../temp/$billed"; $target = "../bigpic/$billed";
08. februar 2005 - 19:03
#14
<?php $max_w = 150; $max_h = 250; $dir = "."; $prefix = "thb_"; $srcdir = "./"; $dstdir = "./tst/"; if( !file_exists($dstdir) ) mkdir( $dstdir ); if( $handle = opendir( $dir ) ) { while( false !== ( $file = readdir( $handle )) ) { if( strtolower(substr( $file, -4)) == ".jpg" ) { rez($file, $prefix, $max_h, $max_w); } } closedir( $handle ); } function rez( $filename, $prefix, $max_h, $max_w ) { global $srcdir; global $dstdir; $dstfilename = $dstdir.$prefix.$filename; $filename = $srcdir.$filename; $rc=getimagesize($filename); $source_x=$rc[0]; $source_y=$rc[1]; $ratio = $source_x / $source_y; $height = $max_h; $width = $max_h * $ratio; if( $width > $max_w ) { $width = $max_w; $height = $max_w / $ratio; } $source_id = imageCreateFromJPEG($filename); $target_id = imagecreatetruecolor($width, $height); imagecopyresampled($target_id,$source_id,0,0,0,0, $width,$height, $source_x,$source_y); imagejpeg($target_id,$dstfilename, 100); } ?>
08. februar 2005 - 19:47
#15
jeg forstår ikke hvad du vil med alt det mappe åbnings sjov.... ?? den skal tage en fil resize den og så lægge den i en anden mappe! ?
08. februar 2005 - 19:51
#16
$billed = billed.jpg; SOURCE: ../temp-pic/$billed TARGET: ../billeder/$billed
08. februar 2005 - 19:54
#17
KUN EN fil ad gangen!
08. februar 2005 - 20:52
#18
jamen så tag dog funktionen og kald den med een fil erstat evt. de variabler jeg har brugt med hardkodede værdier og undskyld jeg forsøger at hjælpe :-) <?php $max_w = 150; $max_h = 250; $dir = "."; $prefix = ""; $srcdir = "./"; $dstdir = "./tst/"; $filename = "min_ene_fil.jpg"; function rez( $filename, $prefix, $max_h, $max_w ) { global $srcdir; global $dstdir; $dstfilename = $dstdir.$prefix.$filename; $filename = $srcdir.$filename; $rc=getimagesize($filename); $source_x=$rc[0]; $source_y=$rc[1]; $ratio = $source_x / $source_y; $height = $max_h; $width = $max_h * $ratio; if( $width > $max_w ) { $width = $max_w; $height = $max_w / $ratio; } $source_id = imageCreateFromJPEG($filename); $target_id = imagecreatetruecolor($width, $height); imagecopyresampled($target_id,$source_id,0,0,0,0, $width,$height, $source_x,$source_y); imagejpeg($target_id,$dstfilename, 100); } ?>
08. februar 2005 - 20:54
#19
Hov jeg må jo nok hellere bruge de "rigtige værdier" for ikke at forvirre. <?php $max_w = 150; $max_h = 250; $dir = "."; $prefix = ""; $srcdir = "../temp-pic/"; $dstdir = "../billeder/"; function rez( $billede, $prefix, $max_h, $max_w ) { global $srcdir; global $dstdir; $dstfilename = $dstdir.$prefix.$filename; $filename = $srcdir.$filename; $rc=getimagesize($filename); $source_x=$rc[0]; $source_y=$rc[1]; $ratio = $source_x / $source_y; $height = $max_h; $width = $max_h * $ratio; if( $width > $max_w ) { $width = $max_w; $height = $max_w / $ratio; } $source_id = imageCreateFromJPEG($filename); $target_id = imagecreatetruecolor($width, $height); imagecopyresampled($target_id,$source_id,0,0,0,0, $width,$height, $source_x,$source_y); imagejpeg($target_id,$dstfilename, 100); } ?>
08. februar 2005 - 21:27
#20
F**k - så rettede jeg forkert :-( Jeg tror denne er der <?php rez( $billede ); function rez( $filename ) { $max_h = 250; $max_w = 300; $srcdir = "../temp-pic/"; $dstdir = "../billeder/"; $prefix = ""; $dstfilename = $dstdir.$prefix.$filename; $filename = $srcdir.$filename; $rc=getimagesize($filename); $source_x=$rc[0]; $source_y=$rc[1]; $ratio = $source_x / $source_y; $height = $max_h; $width = $max_h * $ratio; if( $width > $max_w ) { $width = $max_w; $height = $max_w / $ratio; } $source_id = imageCreateFromJPEG($filename); $target_id = imagecreatetruecolor($width, $height); imagecopyresampled($target_id,$source_id,0,0,0,0, $width,$height, $source_x,$source_y); imagejpeg($target_id,$dstfilename, 100); } ?>
08. februar 2005 - 22:20
#21
det var ikke for at virke sur hehe, var bare lidt forviret ;) hvorfor viser den billedet ?? og den gør ikke som den skal
08. februar 2005 - 23:01
#22
De sidste skulle ikke vise billedet, den gjorde det tidligere for at jeg kunne se om skidtet virkede. Hvis du har indlagt rettelserne er det fordi du har glemt at fjerne echo "<img src=... osv. Hvad gør den ikke ? jeg har testet med nedenstående og fået forventet resultat, mine mapper hedder noget andet end dine, men det burde være ligegyldigt. <?php $billede = "rsz_0.jpg"; // et billede i mappen rez( $billede ); function rez( $filename ) { $max_h = 250; $max_w = 300; $srcdir = "./"; // source mappe $dstdir = "./test/"; // destinations mappe $prefix = ""; $dstfilename = $dstdir.$prefix.$filename; $filename = $srcdir.$filename; $rc=getimagesize($filename); $source_x=$rc[0]; $source_y=$rc[1]; $ratio = $source_x / $source_y; $height = $max_h; $width = $max_h * $ratio; if( $width > $max_w ) { $width = $max_w; $height = $max_w / $ratio; } $source_id = imageCreateFromJPEG($filename); $target_id = imagecreatetruecolor($width, $height); imagecopyresampled($target_id,$source_id,0,0,0,0, $width,$height, $source_x,$source_y); imagejpeg($target_id,$dstfilename, 100); } ?>
09. februar 2005 - 10:05
#23
Den viser bare billedet, dog i den rigtige størrelse (har fjernet koden), jeg kan heller ikke sige vis kilde på siden... og den stopper bare når den har vist billedet.... men må lige prøve igen når jeg for fri fra arbejde!
09. februar 2005 - 16:06
#24
nu virker det fint men synes den resizer den mere ned end den skal der bliver meget hvid luft omkring... fx hvis et billede er 350*100 kommer det ikke helt ud til kanten hvorfor ?
09. februar 2005 - 16:23
#25
det er jo ikke lige til at vide, her gør det som det skal
09. februar 2005 - 17:59
#26
ok men smid et svar
09. februar 2005 - 18:50
#27
Nej tak, svar selv
03. august 2006 - 15:29
#28
svar!
Vi tilbyder markedets bedste kurser inden for webudvikling