2012-04-29 1 views
-1

날이 달성 할 수있는 발현 상대 :비례 화상의 크기에 기초하여 내 제한 크기

I 치수 그것을 그리기 전에 I가 잡을 수있는 임의의 폭/높이의 화상을 .
이미지가 매우 클 수 있으므로 크기를 줄이려고합니다.

캔버스의 너비가 w이고 높이가 h입니다.
설명의 편의를 위해 320x240 크기라고 가정 해 보겠습니다.

이미지의 크기가 캔버스의 크기와 같거나 작 으면 축척 비율은 1입니다. 크기가 클 경우 캔버스 크기와 비례하여 크기를 조정합니다 크기. 내 이미지가 640 × 480 인 경우

그래서 예를 들어, 내 규모의 비율은 내 이미지가 640x240 인 경우 0.5
, 내 규모의 비율은 여전히 ​​320 × 480

이가 작성 될 수 있다면 마찬가지로 0.5
을 것 것 단일 수학 표현? 예를 들어

 
def scale_ratio(canvas_width, canvas_height, image_width, image_height) 
    #math formula for calculating scale 
    return scale 

답변

2
function scale(canvas_width, canvas_height, image_width, image_height) { 
    return Math.min(Math.max(canvas_width/image_width, canvas_height/image_height), 1); 
} 

편집 :

var scale_width = image_width; 
var scale_height = image_height; 
if (image_width > canvas_width || image_height > canvas_height) { 
    var image_ratio = image_height/image_width; 
    if (image_ratio * canvas_width > canvas_height) { 
     scale_width = canvas_height/image_ratio; 
     scale_height = canvas_height; 
    } else { 
     scale_width = canvas_width; 
     scale_height = image_ratio * canvas_width; 
    } 
} 
: 당신은 반올림 오류를 줄이기 위해이 같은 작업을 수행 할 수 있습니다