Permalänk
Medlem

Skala om bild

Jag har en funktion för att räkna ut vilken storlek en bild ska få. Den ser ut som följer:

if( $orig_size['w'] > $max_size['w'] || $orig_size['h'] > $max_size['h']){ if( $orig_size['w'] >= $orig_size['h'] ){ $new_image_w = $max_size['w']; $new_image_h = $orig_size['h'] * ($max_size['w'] / $orig_size['w']); }else{ $new_image_w = $orig_size['w'] * ($max_size['h'] / $orig_size['h']); $new_image_h = $max_size['h']; } }else{ $new_image_w = $orig_size['w']; $new_image_h = $orig_size['h']; }

Den funkar inte som den ska. Vissa bilder får dimensioner som är större än vad som är definierat i max_size. T ex om bilden är 700 x 525 px, och jag sätter max till 113 x 75 px, då blir resultatet 113 x 84 px. Vad är fel i min funktion?

Permalänk
Medlem

$ar = $orig_size['w'] / $orig_size['h']; $new_image_w = $orig_size['w']; $new_image_h = $orig_size['h']; if($new_image_w > $max_size['w']) { $new_image_w = $max_size['w']; $new_image_h = $max_size['w'] / ar; } if($new_image_h > $max_size['h']) { $new_image_w = $max_size['h'] * ar; $new_image_h = $max_size['h']; }

Något sånt?

Visa signatur

I just love the fact that there is a global integer variable named 'i'. Just think, you will never need to declare your loop variable again!
To avoid collisions where a loop that uses 'i' calls another function that loops with 'i', be sure to stack 'i' and restore it when your function exits.