Lage Thumbnails av bilder som lastes opp?

Mr Vest

Sjefen over alle sjefer!
PHP:
// Litt nyttig informasjon er bra for helsen
$newlocation="images/album/thumbs/".$image_name;
$filename = $newname;

// Get new dimensions
list($width, $height) = getimagesize($filename);
$new_width = 250;
$new_height = 150;

// Resample
if ($extension=='png')
{
$image_p = imagecreatetruecolor($new_width, $new_height);
$image = imagecreatefrompng($filename);
imagecopyresampled($image_p, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
}
else if($extension=='gif')
{
$image_p = imagecreatetruecolor($new_width, $new_height);
$image = imagecreatefromgif($filename);
imagecopyresampled($image_p, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
}
else
{
$image_p = imagecreatetruecolor($new_width, $new_height);
$image = imagecreatefromjpeg($filename);
imagecopyresampled($image_p, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
}

// Output
if ($extension=='png')
{
imagepng($image_p, $newlocation, 100);
}
else if ($extension=='gif')
{
imagegif($image_p, $newlocation, 100);
}
else
{
imagejpeg($image_p, $newlocation, 100);
}

Jeg endte opp med denne koden jeg. $extension er noe jeg som kommer frem i scriptet som laster opp bildet i utgangspunktet, og derfor tenkte jeg at det gjerne var greit og bruke den.

Noe veeeeldig rart jeg fikk her. Når jeg laster opp PNG-bilder. Det virker som det kanskje kan være noe galt med PHP hos meg? GIF og JPG funker bra. Jeg får altså denne feilmelding på nettopp PNG-bildene:

Warning: imagepng() [function.imagepng]: gd-png error: setjmp returns error condition in /opplastinscript.php on line 102

Det som befinner seg på den linja er jo da altså: imagepng($image_p, $newlocation, 100); Noen snøring på hva i alle dager som kan lage til slik en feilmelding. Den har jeg aldri sett før.
 

Mr Vest

Sjefen over alle sjefer!
Fant jo ut av denne her ganske kjapt etter ett søk med Google.

imagepng støtter kun Compression level: from 0 (no compression) to 9. og det hjalp lite når jeg i min kode hadde 100. Endret den til 9 så funker også PNG på alle thumbnails. Noen som kan fortelle meg hva Compression level er for noe? :)
 

Pong

Jeg selger sʇɥƃıluʍop :)
Ja, du ser noe lignende på jpeg. Disse komprimeringsrutinene fungerer med lossy compression: jo mer du ønsker å komprimere, jo mindre filstørrelse blir, og styggere bildet blir, men kult at du har mulighet å styre det.
For mer info om lossless og lossy compression: Google is your friend..
 

Mr Vest

Sjefen over alle sjefer!
Hehe, skjønner.

Tidenes matteoppgave dere! Denne her er jeg så usikker på at jeg ikke vet hvor jeg skal gjøre av meg!

Saken er jo den at jeg vil ha Thumpnails slik at ikke bildene ser helt teit ut. Det jeg da mener er at jeg f.eks vil ha en slags Auto på høyden som automatisk kutter ned antall piksler jeg har tatt på bredden også i høyden. Hvordan kan jeg gjøre det?

Ser for meg at dersom bildet da er 2000x500px at resultatet kan bli rart dersom jeg har satt bredde til 500px ? Hvordan løser man slikt?
 

Nextri

Rebel
eksempel:
PHP:
include('imageTransform.php');
$imageTransform->resize($bilde_sti,150,150,'/sti/til/lagringsplass/resized.jpg');
$imageTransform->crop($bilde_sti,150,150,'/sti/til/lagringsplass/cropped.jpg');

Den første funksjonen endrer størrelse. bildet vil være max 150 høyt, og max 150 bredt.
Den andre funksjonen vil lage en thumbnail som er nøyaktig 150x150, men bevarer proposjonene. Kan ofte se bedre ut etter min mening. Spørs litt hva slags bilder den skal croppe.
 

Pong

Jeg selger sʇɥƃıluʍop :)
Den biten sto allerede i min rutine - se tidligere i tråden...

$width_orig = $finfo[0];
$height_orig = $finfo[1];
$ratio_orig = $width_orig / $height_orig;
if( $width/$height > $ratio_orig ) {
$width = $height*$ratio_orig;
} else {
$height = $width/$ratio_orig;
}
if( $width > $width_orig && $height > $height_orig ) {
$width = $width_orig;
$height = $height_orig;
}
 

Mr Vest

Sjefen over alle sjefer!
Jeg blir sjokkert når jeg ser hvafornoen kunnskaper der Wf'ere sitter på altså. :D
 
Topp