Avatar billede clausga Nybegynder
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);
}
Avatar billede plazm Nybegynder
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
Avatar billede bojo Nybegynder
08. februar 2005 - 07:43 #2
der skal kun bruges een delta værdi som de originale værdier så skal ganges med.
Avatar billede 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);
}
Avatar billede clausga Nybegynder
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
Avatar billede 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
Avatar billede 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
Avatar billede clausga Nybegynder
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....
Avatar billede clausga Nybegynder
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
Avatar billede bojo Nybegynder
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>";
?>
Avatar billede clausga Nybegynder
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
Avatar billede bojo Nybegynder
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";
}

?>
Avatar billede clausga Nybegynder
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 ??
Avatar billede clausga Nybegynder
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";
Avatar billede bojo Nybegynder
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);
}

?>
Avatar billede clausga Nybegynder
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! ?
Avatar billede clausga Nybegynder
08. februar 2005 - 19:51 #16
$billed = billed.jpg;

SOURCE: ../temp-pic/$billed
TARGET: ../billeder/$billed
Avatar billede clausga Nybegynder
08. februar 2005 - 19:54 #17
KUN EN fil ad gangen!
Avatar billede bojo Nybegynder
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);
}
?>
Avatar billede bojo Nybegynder
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);
}
?>
Avatar billede bojo Nybegynder
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);
}
?>
Avatar billede clausga Nybegynder
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
Avatar billede bojo Nybegynder
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);
}
?>
Avatar billede clausga Nybegynder
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!
Avatar billede clausga Nybegynder
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 ?
Avatar billede bojo Nybegynder
09. februar 2005 - 16:23 #25
det er jo ikke lige til at vide, her gør det som det skal
Avatar billede clausga Nybegynder
09. februar 2005 - 17:59 #26
ok men smid et svar
Avatar billede bojo Nybegynder
09. februar 2005 - 18:50 #27
Nej tak, svar selv
Avatar billede clausga Nybegynder
03. august 2006 - 15:29 #28
svar!
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