저는 수학에 약하고 이미지 크기 조정 알고리즘에 문제가 있습니다. 이미지의 비율을 특정 비율로 조정하려고합니다.이미지 비율 비교의 배정도
double neededRatio = 1.6d;
while (!AboutEqual(imageRatio, neededRatio))
{
var cropPixels = 10;
//crop code
...
imageRatio = (double)img.Width/img.Height;
}
public static bool AboutEqual(double x, double y)
{
double epsilon = Math.Max(Math.Abs(x), Math.Abs(y)) * 1E-15;
return Math.Abs(x - y) <= epsilon;
}
문제는 내가 실제로 AboutEqual
방법 작동하게하는자를 픽셀의 오른쪽 번호를 찾을 수없는 것입니다 (나는 그것을 here 발견). 때로는 실패하고 내가 좋아하는, 이상한 찾을 이미지가 무기한립니다 얻을, 나는 AboutEqual
방법의 내부 - 동작을 기록 시도하고 물건을 보여주는 것 :
X: 1.5249500998004 Y: 1.6 result: false
X: 1.55600814663951 Y: 1.6 result: false
X: 1.55600814663951 Y: 1.6 result: false
X: 1.58835758835759 Y: 1.6 result: false
X: 1.62208067940552 Y: 1.6 result: false
X: 1.60084925690021 Y: 1.6 result: false
X: 1.5796178343949 Y: 1.6 result: false
X: 1.61388286334056 Y: 1.6 result: false
X: 1.59219088937093 Y: 1.6 result: false
X: 1.62749445676275 Y: 1.6 result: false
X: 1.60532150776053 Y: 1.6 result: false
X: 1.58314855875831 Y: 1.6 result: false
X: 1.61904761904762 Y: 1.6 result: false
X: 1.59637188208617 Y: 1.6 result: false
X: 1.63341067285383 Y: 1.6 result: false
링크 된 질문은 x와 y가 모두있는 경우 "라고 계산 된 값은 엡실론을 증가시켜야합니다. " - 어떻게해야 작도의 픽셀 수를 찾을 수 있습니까?
자르기 코드의 기능은 무엇입니까? 비율을 높이려면 (또는 줄이기 위해) 긴 가장자리 (또는 짧은 가장자리)에서 픽셀을 잘라내시겠습니까? –
예,'if (imageRatio> neededShape)'가 너비를 자르고, 그렇지 않으면 높이를 자릅니다. – Madd0g
'1e-15'는'1.6e0'과의 크기 차이로 상당히 작습니다. "가까운"것에 대해 당신은 무엇을 찾고 있습니까? – user7116