2012-08-30 5 views
0
나는 순간에 이미지 자르기 도구 일하고

을 유지, 이미지 자르기 도구 나는 사용자가 업로드 한 원본보다 작은에서 작물 걸리는 이미지를 만들됩니다하려고 무엇을, jCrop에서 온다. 기본적으로 가로 이미지를 업로드하는 경우 촬영의 종횡비를 변경하지 않고 이미지를 304px 넓게 만들 필요가 있습니다.는 가로 세로 비율

예를 들어

사용자가 세로 샷을 업로드하면, 나는 샷의 화면 비율을 변경하지 않고 이미지 237px을해야합니다.

이것이 가능합니까? 내 코드에서 원본 이미지 크기에 액세스 할 수 있지만 가로 세로 비율을 변경하지 않도록 할 수는 없습니까?

답변

0

원본 이미지가 이미 충분히 넓 으면 가능합니다. 크기가 충분하지 않은 경우 자르기에 충분한 데이터가 없으므로 가로 세로 비율을 유지하려면 자르기 전에 이미지의 크기를 조정해야합니다. 이 같은

뭔가 당신이 시작할 수 있어야합니다

CropWidth=237; 
AspectRatio= SourceWidth/SourceHeight; 
CropHeight = CropWidth*AspectRatio; 
0

제대로 사용해야 가로 세로 비율을 유지하려면 GCD를 :

function calcRatio(objectWidth, objectHeight) { 
    var ratio = gcd(objectWidth, objectHeight), 
     xRatio = objectWidth/ratio, 
     yRatio = objectHeight/ratio; 
    return { "x": xRatio, "y": yRatio }; 
} 
:

function gcd(a, b) { 
    return (b == 0) ? a : gcd(b, a % b); 
} 

당신은 다음과 같은 뭔가해야

이것은 어떤 개체의 비율을 얻을 것입니다. 이 정보를 사용하여 결과 이미지의 크기를 파악할 수 있습니다.

function findSize (targetHeight, xRatio, yRatio) { 
    var widthCalc = Math.round((xRatio * targetHeight)/yRatio); 
    return { "width" : widthCalc, "height" : targetHeight }; 
} 

var test = calcRatio(1280,720), 
    dimensions = findSize(400, test.x, test.y); 
    //400 is what we want the new height of the image to be 

이들은 귀하의 크기입니다. 당신이 당신의 일을 할 필요가있는 당신의 이미지 주위에 여분의 "공간"이 없다면. 그렇지 않으면 두 경우를 처리해야합니다.