이미지를 JS 슬라이드 쇼에 표시하고 있습니다. 이미지는 매우 큰 크기이므로 HTML에서 축소합니다. 종횡비를 유지하기 위해 몇 가지 수학을 수행합니다. 결국 큰 이미지는 품질이 떨어지게됩니다. 이 이미지는 서버에 이미 존재하며 원본 파일의 크기를 변경하지 않아야합니다.이미지 품질 손실 줄임
품질 저하의 원인은 무엇입니까? 작은 크기의 이미지를 고집해야하며, 최종 크기를 늘려야합니까? 도움이되는 코드는 최대 너비와 높이가 현재 각각 270과 180입니다. 이 모든 것은 C#입니다.
// srcccccc is the image file. Can be any kind of extension jpg, png, etc.
if (srcccccc != "")
{
Globals.NavigateURL();
string path = PortalSettings.HomeDirectory + srcccccc;
using (System.Drawing.Image img = System.Drawing.Image.FromFile(@Server.MapPath(path)))
{
int[] newSizes = ResizeWithRatio(img);
contentsall += "<img src=\"" + PortalSettings.HomeDirectory + srcccccc + "\" alt=\"Image "
+ folderidddin + "\" height=\"" + newSizes[1] + "px\"" + "\" width=\"" + newSizes[0] + "px\" />";
}
}
// HTML is dynamically added later....
private int[] ResizeWithRatio(System.Drawing.Image img)
{
int[] sizes = new int[2];
if (img.Width > maxWidth || img.Height > maxHeight)
{
float ri = (float)img.Width/(float)img.Height;
float rs = (float)maxWidth/(float)maxHeight;
if (rs > ri)
{
sizes[0] = (int)((float)img.Width * (float)maxHeight/(float)img.Height);
sizes[1] = maxHeight;
}
else
{
sizes[0] = maxWidth;
sizes[1] = (int)((float)img.Height * (float)maxWidth/(float)img.Width);
}
}
else
{
sizes[0] = img.Width;
sizes[1] = img.Height;
}
return sizes;
}
가능 중복 [고화질 이미지 스케일링 C 번호 (http://stackoverflow.com/questions/249587/high-quality-image-scaling-c-sharp) –
에게, 품질 이미지 크기가 아니라 이미지 태그를 조작하기 때문에 크기가 조정 된 이미지의 크기는 브라우저에 달려 있습니다. 서버 측에서'System.Drawing.Image'의 크기를 조정하고 완전히 다른 이미지로 브라우저에 다시 제공하면 품질을 제어 할 수 있습니다. –