Gå til innhold

Formel for å beholde proporsjoner


Anbefalte innlegg

Jeg holder på med et script som lar brukerne mine laste opp bilder. Scriptet er ikke noe problem, men når jeg skulle finne en formel som tok hensyn til proporsjonene stoppet det opp. Jeg klarte å lage en liten formel, men bildene må enders etter spesielle mål, og disse målene kan forandre seg.

 

For å forklare problemet litt bedre, i håp om at noen vil hjelpe meg, bruker jeg et hvitt ark som eksempel. Arket kan ha mange forskjellige størrelser, som vist under:

 

prop_01.gif

 

Bredden og høyden på arket er aldri ukjent, og finnes i variablene $ark_w (bredde) og $ark_h (høyde). Målene på bildet kan selvsagt også variere veldig, som vist under:

 

prop_02.gif

 

Altså, kombinasjonen av målene på arket og på bildet kan variere i det uendelige. Målene på bildet er heller aldri ukjent, og kalles $bilde_w (bredde) og $bilde_h (høyde).

 

Si at an bruker har lastet opp et bilde som er 480 x 640 piksler. Arket bildet må passe til er 208 x 320.

 

prop_03.gif

 

Bildet må derfor oppfylle følgende krav:

• Ikke være bredere enn 208 piksler

• Ikke være høyere enn 320 piksler

 

For å regne ut ny størrelse på bildet laget jeg følgende formel:

$ny_h = $ark_h; // $ny_h = 320
$ny_w = $ny_h*($bilde_w/$bilde_h); // $ny_w = 320*(480/640)

 

$ny_w blir 320 (OK)

$ny_h blir 240 (STØRRE ENN ARK)

 

prop_04.gif

 

Denne formelen beholdt proporsjonene, men selv om den nye høyden på bildet nå ikke var større enn høyden på arket, var bredden på bildet plutselig større enn bredden på arket. Det er noe her jeg ikke helt forstår. Photoshop sin Image Size… funksjon gjør dette veldig enkelt, men formelen vises (selvfølgelig) ikke.

 

Håper det er noen som er litt bedre i matte enn meg her :)

 

EDIT:

En liten skrivefeil

Endret av simenss
Lenke til kommentar
Videoannonse
Annonse

I scriptet ditt tar du utganspunkt i at høyden på arket er det som begrenser størrelsen. Du må altså sjekke bredden du har regnet ut mot bredden av arket og gjøre nye beregninger hvis bildet fortsatt er for stort. Alternativt kan du sjekke proporsjonene til arket i fordhold til bildet først, før du finner størrelsen på bildet. For eksempel slik:

 

if ($ark_h / $ark_w > $bilde_h / $bilde_w) {
   // Bredden på arket begrenser størrelsen
   $ny_w = $ark_w;
   $ny_h = $ny_w * ($bilde_h / $bilde_w);
} else {
   // Høyden på arket begrenser størrelsen
   $ny_h = $ark_h;
   $ny_w = $ny_h * ($bilde_w / $bilde_h);
}

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