문제

생성이 필요합니다 축소판 많은 JPEG (200,000+)의 경우 모든 엄지 손가락의 높이와 너비가 같은지 확인하고 싶습니다. 그러나 이미지의 비율을 변경하고 싶지 않으므로 빈 공간을 짧은 치수에 추가하여 "제곱 업"을 추가해야합니다. 빈 공간의 배경색은 가변적입니다.

다음은 엄지 손가락을 생성하는 데 사용하는 코드 스 니펫입니다. 사각형을하는 가장 좋은 방법은 무엇입니까?

     Dim imgDest As System.Drawing.Bitmap = New Bitmap(ScaleWidth, ScaleHeight)
     imgDest.SetResolution(TARGET_RESOLUTION, TARGET_RESOLUTION)  
     Dim grDest As Graphics = Graphics.FromImage(imgDest)

     grDest.DrawImage(SourceImage, 0, 0, imgDest.Width, imgDest.Height)
도움이 되었습니까?

해결책

이건 어때. 어쩌면 비트 맵에 먼저 검은 색 (또는 어떤 색상) 사각형을 그려야 할 수도 있습니다.

그리고 크기가 크기가 큰 이미지를 배치 할 때는 더 짧은 차원을 기반으로 이미지의 배치를 계산 한 다음 해당 차이의 차이의 절반으로 이동하고 다른 차이를 0에 유지하십시오.

그게 작동하지 않습니까?

다른 팁

처럼 vaibhav 먼저 전체 썸네일 영역을 검은 색으로 페인트하십시오. 이것은 이미지를 먼저 썸네일에 맞추고 검은 색으로 칠할 사각형을 결정하는 것보다 간단합니다. 기둥 박스 또는 레터 박스.

맞는 일반적인 솔루션을위한 의사 코드 imageWidth 엑스 imageHeight a로의 이미지 thumbWidth 엑스 thumbHeight (정사각형 일 필요는 없음) 영역 :

imageRatio = imageWidth / imageHeight;
thumbRatio = thumbWidth / thumbHeight;

zoomFactor = imageRatio >= thumbRatio
    ? thumbWidth / imageWidth 
    : thumbHeight / imageHeight;

destWidth = imageWidth * zoomFactor;
destHeight = imageHeight * zoomFactor;

drawImage(
    (thumbWidth - destWidth) >> 1,
    (thumbHeight - destHeight) >> 1,
    destWidth,
    destHeight);
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top