Gå til innhold

Resize bildet uten forstrekning


Anbefalte innlegg

Skrevet

Jeg er 50% sikker på at dette er et tema som har hvert tatt opp flere ganger, jeg har søkt litt rundt på forumet og fant ikke helt det jeg lette etter.

 

Problemstillingen min er følgende:

 

Jeg trenger et resizing system hvor jeg kan bestemme en max bredde / høyde, bildene skal deretter bli resizet. uten at bildet blir forstrukket. Takker for henvisninger til kode eller forslag til framgangsmåte for å programmere dette.

 

Takk for svar :)

Videoannonse
Annonse
Skrevet (endret)

Det å resize eit bildet og samtidig oppretthalde den rette aspect ratioen krever litt kode. Under har du eit eksempel, eg har prøvd og kommentere mye:

 

<?php
$info = getimagesize($path); // $info[0] = original width, $info[1] = original height
if($info[0] > $info[1])
// We got a wide image
{
$new_width = $width;
           // Calculate the ratio between new and old width
$ratio = $width / $info[0];
           // And use it to calculate the new height
$new_height = floor($info[1]*$ratio);
if($new_height > $height)
// If the new height is larger then requested, we need to scale it even more down
{
	$ratio = $height / $new_height;
	$new_height = $height;
	$new_width = floor($new_width*$ratio);
}
} else if($info[0] < $info[1])
// We got a high image, the same as a wide only based on the height ratio this time
{
$new_height = $height;
$ratio = $height / $info[1];
$new_width = floor($info[0]*$ratio);
if($new_width > $width)
// The new width did not match the requested. Make the image even smaller
{
	$ratio = $width / $new_width;
	$new_width = $width;
	$new_height = floor($new_height*$ratio);
}
} else
// Square image
{
if($height < $width)
// Height is smallest
{
	$new_height = $height;
	$new_width = $height;
} else if($height > $width)
// Width is smallest
{
	$new_height = $width;
	$new_width = $width;
} else
// Square requested
{
	$new_height = $height;
	$new_width = $width;
}
}
?>

Beklager engelske kommentarer

Endret av Runar0
Skrevet (endret)

Mange takk :) Skal teste dette ut, men jeg et så finurlig problem at når jeg kopier koden din, tas det ikke hensyn til linjebrytninger i teksteditoren, og da blir det litt vanskelig å tolke koden. Finnes det et annet sted jeg kan kopiere den fra? (ot: må si diskusjon har blitt mer buggy siden sist).

 

Edit: glem det, ff var løsningen. skal teste ut koden nå (:

Endret av erixz

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...