Gå til innhold

[LØST]"Crop"'e bilder i bildefremvisning


Anbefalte innlegg

Heisann jobber med å lage et galleri og der ønsker jeg at alle bildene skal vises med like høyde og like bredde hvor man kan trykke på hvert enkelt bilde for å åpne det.

 

Problemet er jo at alle bilder har forskjellig størrelse og derfor så er dette litt vanskelig, det jeg leter etter er en måte å "crop"'e (kjenner bare dette navnet på dette) bildene til å vise akkurat 100px høyde og 150px bredde uannsett størrelsen på bilde. Dette uten at bilde "strekkes" ut av sin størrelsesratio. Så det blir jo på en måte en zoom for å kunne plassere alle bilder på akkurat 100px høyde og 150px bredde uannsett tidligere størrelse.

 

Bruker dette nå:

$filename = $_GET['image'];
$ext = $_GET['type'];

$width = 150;
$height = 100;

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

list($width_orig, $height_orig) = getimagesize($filename);

if ($width && ($width_orig > $width)) {
  $height = ($width / $width_orig) * $height_orig;
} else if ($height_orig > $height ){
  $width = ($height / $heigth_orig) * $width_orig;
} else {
$width = $width_orig;
$height = $height_orig;
}

$image_p = imagecreatetruecolor($width, $height);

if($ext == 'jpg')
  $image = imagecreatefromjpeg($filename);
if($ext == 'gif')
  $image = imagecreatefromgif($filename);
if($ext == 'png')
  $image = imagecreatefrompng($filename);

imagecopyresampled($image_p, $image, 0, 0, 0, 0, $width, $height, $width_orig, $height_orig);

imagejpeg($image_p, null, 100); 
imagedestroy($image_p);

Endret av thomas_c24
Lenke til kommentar
Videoannonse
Annonse

Løste problemet på egenhånd, sydde sammen koden min med en crop-kode som jeg fant her på forumet, den som jeg fant bare crop'a til den størrelsen du ville ha, så om du hadde et stort bilde så fikk du bare en liten del av bildet. Mens det jeg nå har laget tilpasser først størrelsen slik at bredden eller høyden er riktig, så crop'er overskuddet.

 

function crop_image($img){
$new_x = 150; //ønsket bredde
$new_y = 100; //Ønsket høyde


$allowed_filetypes = array('jpg', 'jpeg', 'png', 'gif');
$filetype = strtolower(substr(strrchr($img, '.'), 1)); //hent ut filtypen


if(!in_array($filetype, $allowed_filetypes)){
echo $img . ' Er ikke en godkjent bildefil';
return false;
}

if($filetype == 'jpg') $filetype = 'jpeg';

$src = call_user_func('imagecreatefrom'.$filetype, $img);


list($width_orig, $height_orig) = getimagesize($img);

$width = 150;
$height = 100;
if ($width && ($width_orig > $width)) {
  $height = ($width / $width_orig) * $height_orig;
} else if ($height_orig > $height ){
  $width = ($height / $heigth_orig) * $width_orig;
} else {
$width = $width_orig;
$height = $height_orig;
}
$temp_img = imagecreatetruecolor($width, $height) or die("En ukjent feil oppstod");
imagecopyresampled($temp_img, $src, 0, 0, 0, 0, $width, $height, $width_orig, $height_orig);

$old_x = imagesx($temp_img);
$old_y = imagesy($temp_img);
$cpy_x = ($old_x / 2) - ($new_x / 2);
$cpy_y = ($old_y / 2) - ($new_y / 2);

$new_img = imagecreatetruecolor($new_x, $new_y) or die("En ukjent feil oppstod");
imagecopyresampled($new_img, $temp_img, 0, 0, $cpy_x, $cpy_y, $new_x, $new_y, $new_x, $new_y);
imagepng($new_img);

imagedestroy($temp_img);
imagedestroy($new_img);
imagedestroy($src);  


}

$img = $_GET['image'];
header("Content-type: image/png");
crop_image($img);

Endret av thomas_c24
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...