2010-01-06 6 views
0

나는 (600 * 800 크기) 또는 모든 크기의 이미지 파일을 가지고 있습니다. 이제 크기 **** (110 * 110) ****폴더에 저장하는 동안 이미지의 크기를 조정하는 방법

크기의 thubnail 이미지 크기로 변환해야하지만 이미지의 크기를 줄이면 이미지 품질을 변경해서는 안됩니다. 한 번 이미지 크기를 줄이면 이미지 품질이 떨어졌습니다.

이미지의 품질에 영향을 미치지 않으면 서 이미지를 축소판 이미지로 변환 할 수있는 방법이 없습니다 [.net에 내장 된 클래스가 있습니다. 당신은 당신이 원래 크기의 품질이 영향을 받게 될 축소 버전의에 다시 살리려고 노력 때에 만, 그것은 품질의 감소하지 않는 이미지를 줄여야 할 때)

어떤 도움

답변

0

좋은 것입니다.

3

글쎄, 어떻게 할 것인가, 흥미로운 자료가 here 당신을 도울 수 있습니다.

해상도를 의미하는 경우 이미지를 축소하고있는 한 아무런 방법이 없으며 더 이상 재구성 할 수없는 공간 정보를 버리고 있습니다. 물론 어떤 종류의 보간법을 사용하더라도 원래의 그림과 결코 같지는 않습니다.

각각 한 버전을 저장할 수 있습니다.

링크에서 얻은 코드는 다음과 같습니다. 솔직히 말해서, 비트 맵에서 시작하는 코드의 마지막 5 줄은 b = 새로운 비트 맵 (destWidth, destHeight)이라고 생각합니다. 당신의 문제를 해결하기에 충분합니다.

private static Image resizeImage(Image imgToResize, Size size) 
{ 
    int sourceWidth = imgToResize.Width; 
    int sourceHeight = imgToResize.Height; 

    float nPercent = 0; 
    float nPercentW = 0; 
    float nPercentH = 0; 

    nPercentW = ((float)size.Width/(float)sourceWidth); 
    nPercentH = ((float)size.Height/(float)sourceHeight); 

    if (nPercentH < nPercentW) 
     nPercent = nPercentH; 
    else 
     nPercent = nPercentW; 

    int destWidth = (int)(sourceWidth * nPercent); 
    int destHeight = (int)(sourceHeight * nPercent); 

    Bitmap b = new Bitmap(destWidth, destHeight); 
    Graphics g = Graphics.FromImage((Image)b); 
    g.InterpolationMode = InterpolationMode.HighQualityBicubic; 

    g.DrawImage(imgToResize, 0, 0, destWidth, destHeight); 
    g.Dispose(); 

    return (Image)b; 
} 
관련 문제