다양한 크기의 이미지 업로드를 허용 한 다음 미리보기 이미지의 미리 정의 된 영역을 잘라낼 수 있습니다.임의의 크기의 이미지를 기준으로 이미지가 잘릴 수있는 방법은 무엇입니까?
썸네일 크기는 150x150으로 사전 정의됩니다. Jcrop.js 도구를 사용하여 이미지의 섹션을 선택하십시오.
는 문제점 :
렌더링 된 이미지에 설정된 높이/폭을 구현함으로써, 원 화상보다 작은 사이즈의 업로드 된 화상을 표시하고있는 영역을 선택할 때 재생하게되는 스케일 팩터가 자르기.
자르기 영역의 크기를 비례 적으로 줄이거 나 표시된 크기와 비교하여 실제 이미지 크기에 비례하여 이미지의 크기를 조정해야합니다.
질문 : 브라우저의 규모가 원본 이미지 대 이미지를 표시 알아낼 어떻게
? 현재 이미지를 저장하는 데 다음 코드를 사용하고 있지만 스케일링을 고려하면 어떻게됩니까?
public static Image CropImage(Image originalImage, int x, int y, int width, int height)
{
var bmp = new Bitmap(width, height);
bmp.SetResolution(originalImage.HorizontalResolution, originalImage.VerticalResolution);
using (var graphic = Graphics.FromImage(bmp))
{
graphic.SmoothingMode = SmoothingMode.AntiAlias;
graphic.InterpolationMode = InterpolationMode.HighQualityBicubic;
graphic.PixelOffsetMode = PixelOffsetMode.HighSpeed;
graphic.DrawImage(originalImage, new Rectangle(0, 0, width, height), x, y, width, height, GraphicsUnit.Pixel);
return bmp;
}
}
보너스 질문 :
내가 발견 한 또 다른 문제는 ImageFormatMemoryBMP
를 생성하는 새로운 비트 맵을 만들 때 원본 파일의 ImageFormat를 전송하는 더 효율적인 방법이 될 수없는 것으로 보인다 그리고 당신은 할 때 Bitmap.Save (memorystream, original rawformat)를 호출하면 오류가 발생합니다. 그리고 비트 맵 RawFormat에는 setter가 없습니다.
그럼 어떻게 새 비트 맵에서 형식을 설정할 수 있습니까?