Avatar billede wolstrup Nybegynder
26. juni 2006 - 20:54 Der er 18 kommentarer og
1 løsning

Resize af galleribilleder

Jeg forsøger at lave nogle thumbnails, men det lader til at mit script ikke kan finde mine filer. Har nogle filer i mappen billeder, og i den har jeg en mappe "thumbnails", her skulle mine thumbnails gerne ende. Koden virker fint hvis jeg køre siden for sig selv, men køre den som inklude altså noget lignende index.php?side=lav_thumbs 

Får følgende fejl:

Warning: imagecreatefromjpeg(): Unable to access links.jpg in /var/www/hjemmeside.dk/public_html/side/billeder/thumb.php on line 29

Warning: imagecreatefromjpeg(links.jpg): failed to open stream: No such file or directory in /var/www/hjemmeside.dk/public_html/side/billeder/thumb.php on line 29


Script:

function imageresizejpeg($sourcefile,$maxwidth,$maxheight,$destinationfile) { // funktion til resize eaf jpg-filer

    global $newwidth,$newheight;

  if($img_src=imagecreatefromjpeg($sourcefile)) {
        copy($sourcefile, $destinationfile);
        $info=getimagesize($sourcefile);

        if($info[1]>$maxheight || $info[0]>$maxwidth)
        {
        $ratio_height=$maxheight/$info[1];
        $ratio_width=$maxwidth/$info[0];
        $ratio=min($ratio_width,$ratio_height);
        $newwidth=intval($info[0]*$ratio);
        $newheight=intval($info[1]*$ratio);
        $img_dst=imagecreatetruecolor($newwidth,$newheight);
        imagecopyresampled($img_dst, $img_src, 0, 0, 0, 0, $newwidth, $newheight, $info[0], $info[1]);
        imagejpeg($img_dst, $destinationfile);
        imagedestroy($img_dst);
        }
        else
        {
        $newwidth=$info[0];
        $newheight=$info[1];
        }
    imagedestroy($img_src);
    return true;
    }
    else
    {
    return false;
    }
}

function get_size($info,$maxwidth,$maxheight) { // funktion til beregning af størrelse af ikke-jpg-filer
    global $newwidth,$newheight;

    if($info[1]>$maxheight || $info[0]>$maxwidth) {
        $ratio_height=$maxheight/$info[1];
        $ratio_width=$maxwidth/$info[0];
        $ratio=min($ratio_width,$ratio_height);
        $newwidth=intval($info[0]*$ratio);
        $newheight=intval($info[1]*$ratio);
    return true;
    }
    else
    {
      $newwidth=$info[0];
      $newheight=$info[1];
    }
}
Avatar billede jakobdo Ekspert
26. juni 2006 - 21:49 #1
Selve fejlen tyder på stien ikke er den korrekte.
Hvor ligger selve thumb.php filen?
Og hvor ligger din index.php?
Avatar billede wolstrup Nybegynder
26. juni 2006 - 22:01 #2
index.php ligger i /public_html/side/index.php og thumb.php i /public_html/side/billeder/thumb.php
Avatar billede jakobdo Ekspert
26. juni 2006 - 22:10 #3
Når du så kalder filen via: index.php?side=thumb.php
Så skal du lave fulde stier: /var/www/hjemmeside.dk/public_html/side/billeder/
Så vil din kode virke.
Avatar billede wolstrup Nybegynder
26. juni 2006 - 22:46 #4
Men hvordan indsætter jeg den fulde sti? Er det noget lignende: function imageresizejpeg("/var/www/hjemmeside.dk/public_html/side/billeder/
$sourcefile",$maxwidth,$maxheight,"/var/www/hjemmeside.dk/public_html/side/billeder/thumbnails/$destinationfile")  ???
Avatar billede jakobdo Ekspert
27. juni 2006 - 07:53 #5
Ja, f.eks.
Du kunne også lave:
$src = "/var/www/hjemmeside.dk/public_html/side/billeder/";
$dst = "/var/www/hjemmeside.dk/public_html/side/billeder/thumbnails/";
Og så i funktionen:
imageresizejpeg($src . sourcefile, $maxwidth, $maxheight, $dst . $destinationfile);
Avatar billede wolstrup Nybegynder
27. juni 2006 - 08:55 #6
Så får jeg:

Parse error: syntax error, unexpected '.', expecting ')' in /var/www/hjemmeside.dk/public_html/side/billeder/thumb.php on line 27

Har brugt følgende:

function imageresizejpeg($src . $sourcefile,$maxwidth,$maxheight,$dst . $destinationfile) {

Skulle den ikke være ok, eller mangler jeg noget? :-)
Avatar billede jakobdo Ekspert
27. juni 2006 - 09:07 #7
Hvad har du stående på linie: 27 eller 26-28?
Avatar billede wolstrup Nybegynder
27. juni 2006 - 09:19 #8
Linie 27 er function imageresizejpeg($src . $sourcefile,$maxwidth,$maxheight,$dst2 . $destinationfile)

et par liner før og efter:

$src = "/var/www/hjemmeside.dk/public_html/side/billeder/";
$dst = "/var/www/hjemmeside.dk/public_html/side/billeder/thumbnails/";

function imageresizejpeg($src . $sourcefile,$maxwidth,$maxheight,$dst2 . $destinationfile) { // funktion til resize eaf jpg-filer

    global $newwidth,$newheight;
Avatar billede jakobdo Ekspert
27. juni 2006 - 09:32 #9
Prøv lige at smid din fulde kode herind.
Avatar billede wolstrup Nybegynder
27. juni 2006 - 09:41 #10
<?
// DEFINEREDE VARIABLERNE:

// Thumbnails max størrelse
$maxwidth = 224;
$maxheight = 168;

// Thumbnail-mappens navn
$thumbnail_mappe = "./billeder/thumbnails";

// NUMRE AF <TD> PR. <TR> ( PA DANSK/ENGELSK: COLUMNS PA SIDEN :-) )
$td='2';

// BAGGRUNDSFARVE
$bg='white';

// SKAL NAVNES VISES PÅ BILLEDET
$name='1'; // 1 = yes, 0 = no
// SHOW TITLE PA SIDEN
$pagetitle='billeder';

### --- PAS PA MED AT RETTET NOGET HERUNDER --- ###
$src = "/var/www/hjemmeside.dk/public_html/side/billeder/";
$dst = "/var/www/hjemmeside.dk/public_html/side/billeder/thumbnails/";

function imageresizejpeg($src . $sourcefile,$maxwidth,$maxheight,$dst2 . $destinationfile) { // funktion til resize eaf jpg-filer

    global $newwidth,$newheight;

  if($img_src=imagecreatefromjpeg($sourcefile)) {
        copy($sourcefile, $destinationfile);
        $info=getimagesize($sourcefile);

        if($info[1]>$maxheight || $info[0]>$maxwidth)
        {
        $ratio_height=$maxheight/$info[1];
        $ratio_width=$maxwidth/$info[0];
        $ratio=min($ratio_width,$ratio_height);
        $newwidth=intval($info[0]*$ratio);
        $newheight=intval($info[1]*$ratio);
        $img_dst=imagecreatetruecolor($newwidth,$newheight);
        imagecopyresampled($img_dst, $img_src, 0, 0, 0, 0, $newwidth, $newheight, $info[0], $info[1]);
        imagejpeg($img_dst, $destinationfile);
        imagedestroy($img_dst);
        }
        else
        {
        $newwidth=$info[0];
        $newheight=$info[1];
        }
    imagedestroy($img_src);
    return true;
    }
    else
    {
    return false;
    }
}

function get_size($info,$maxwidth,$maxheight) { // funktion til beregning af størrelse af ikke-jpg-filer
    global $newwidth,$newheight;

    if($info[1]>$maxheight || $info[0]>$maxwidth) {
        $ratio_height=$maxheight/$info[1];
        $ratio_width=$maxwidth/$info[0];
        $ratio=min($ratio_width,$ratio_height);
        $newwidth=intval($info[0]*$ratio);
        $newheight=intval($info[1]*$ratio);
    return true;
    }
    else
    {
      $newwidth=$info[0];
      $newheight=$info[1];
    }
}

### --- PAS PA MED AT RETTET NOGET HERUNDER --- ###
$handle=opendir('./billeder');
// GO
$piccy=array();
$count=0;
// SCAN THE DIR
//while (($filename = readdir($handle))!==false) {
while ($filename = readdir($handle)) {
  // TYPER FILER DER KAN HENTES
  if (eregi("(\.jpg|\.gif|\.bmp|\.png|\.JPG|\.GIF|\.BMP|\.PNG)$", $filename)) { // hvis fil er en billedfil
    $piccy[$count] = $filename;
    $count++;
  }
}
// LUK DIR
closedir($handle); 
// SORTERE FILERNE
sort($piccy);
reset($piccy);

// VISER STORT IMAGE

if ($_GET['large']){ // hvis large er med som query-string

$large = $_GET['large'];
        echo "<html><head><title>BILLEDER " . $large . "</title></head><body bgcolor=" . $bg . ">";
  echo '<div align="center">';
// HVIS NAVNET ER SAT TIL AT VISES?
  if ($name=="1") {
    echo '<br><font face="verdana" size="1">Dit billedevalg: ' . $large . '</font>';
  }
// VIS IMAGE
  echo '<table width="100%" border=0 cellpadding=0 cellspacing=0>';
  echo '<tr>';
  echo '<td valign="middle" align="center"><a href=java script:history.back(-1)><img src="'.$large.'" alt="'.$large.'" border=0></a></td>';
  echo '<br>';
  echo '</tr></table>';
  echo '<br><br>';
  echo '<a href=java script:history.back(-1)>';
  echo '<font face="verdana" size="1">Tilbage til galleri</font></a>';
// NO PROBLEMO, LAVER TABLER FOR THUMBNAILS:
} else { // hvis large ikke er med som query-string
// START TABLE SAET cellpadding, cellspacing, colors, 
echo '<html><head><title>billeder</title>';
echo '<head>';
echo "<body bgcolor=" . $bg . ">";
echo '<div align="center"><font face="verdana" size="1">' . $pagetitle . '</font><br>';
echo '<br><table width="100%" border=0 cellpadding=0 cellspacing=0>';
echo '<tr>';
// FORDI <TD> DET ER SAT AF BRUGER, LAV THE PERCENTAGES:
$divider=ceil(100/$td);
if (($divider*$td)>100) $divider--;
// HENT IMAGES
for ($l=0;$l<=sizeof($piccy)-1;$l++){
  $isend = strpos((($l)/$td),".");
  if (!$isend && ($l!=0)){
  echo "</tr>\n<tr><td colspan=$td><br></td></tr>\n<tr>\n";
  }
  if ($l==0){
  echo "\n";
  }
  // START <TD>
  echo '<td width="'.$divider.'%" valign="middle" align="center">';
  // FA STORT BILLEDE (IF SELECTED)
  echo "<a href=\"$PHP_SELF?large=" . $piccy[$l] . "\">";
  // VISER THUMBNAILS
  $thumbnail_mappe = $thumbnail_mappe . "/"; // vi sætter en skråstreg efter undermappens navn
  $thumb_name = $thumbnail_mappe . "thumbnail_" . $l . ".jpg";
  if (eregi("(\.jpg|\.JPG)$", $piccy[$l])) { // hvis filtype er jpg
  imageresizejpeg($piccy[$l],$maxwidth,$maxheight,$thumb_name) ;
  echo '<img src="' . $thumb_name . '" alt="' . $piccy[$l] . '" border=0 width="' . $newwidth .'" height="' . $newheight .'"></a><br><br>';
  } else { // hvis filtype ikke er jpg
  $size=getimagesize($piccy[$l]); // laver et array med width og hight
  get_size($size,$maxwidth,$maxheight) ;
  echo '<img src="' . $piccy[$l] . '" alt="' . $piccy[$l] . '" border=0 width="' . $newwidth .'" height="' . $newheight .'"></a><br><br>';
  }
  // OM NAVNET ER SAT TIL AT BLIVE VIST?
  if ($name=="1") {
  echo '<font face="verdana" size="1">' . $piccy[$l] . '</font>';
  }
  echo '</td>';
  echo"\n";
} // for-løkken slutter
  echo '</tr></table></div>';
} // else slutter
  echo '<br><br><br><div align="center"><font face="verdana" size="1"></a></font></div></body></html>';
?>
Avatar billede jakobdo Ekspert
27. juni 2006 - 10:00 #11
Det var meget kode, det kan laves lettere, men det må evt. blive i aften for mit vedkommende.
Men prøv at ret denne linie til fuldsti:
opendir('./billeder')

Og fjern $src og $dst i dit funktions kald i linie 27.
Avatar billede wolstrup Nybegynder
27. juni 2006 - 18:35 #12
Du må meget gerne prøve at kigge på det hvis du får tid, synes jeg har prøvet alt nu, men kan ikke få det til at funke. På forhånd tak.
Avatar billede jakobdo Ekspert
27. juni 2006 - 18:45 #13
Prøv lige at start med at sæt den fulde sti til: opendir('./billeder')
så det bliver: opendir('/var/www/hjemmeside.dk/public_html/side/billeder/');
Avatar billede wolstrup Nybegynder
27. juni 2006 - 19:28 #14
Hvis jeg smider opendir('/var/www/hjemmeside.dk/public_html/side/billeder/'); ind og erstatter $src og $dst med det oprindelige får jeg følgende fejl for hvert af de billeder i mappen billeder. Den udskriver navnene på billeder fint nok: 

Warning: imagecreatefromjpeg(): Unable to access links.jpg in /var/www/hjemmeside.dk/public_html/side/billeder/thumb.php on line 34

Warning: imagecreatefromjpeg(links.jpg): failed to open stream: No such file or directory in /var/www/hjemmeside.dk/public_html/side/billeder/thumb.php on line 34

linie 34 er:

  if($img_src=imagecreatefromjpeg($sourcefile)) {
Avatar billede jakobdo Ekspert
27. juni 2006 - 19:51 #15
kontakt mig på msn: jakobdo (indsæt @) hotmail (og så et .) com
Avatar billede wolstrup Nybegynder
27. juni 2006 - 21:12 #16
Fornem service! Smid et svar
Avatar billede jakobdo Ekspert
27. juni 2006 - 21:30 #17
Et svar!
Og løsningen var i bund og grund at give fuld sti i denne funktion:
imageresizejpeg($fuldsti_til_original_billeder . $piccy[$l],$maxwidth,$maxheight,$fuldsti_til_thumb_billeder . $thumb_name) ;
Avatar billede jakobdo Ekspert
27. juni 2006 - 21:30 #18
Og en kommentar! :o/
Avatar billede jakobdo Ekspert
28. juni 2006 - 08:36 #19
Takker for point.
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