좋은 품질로 가로 세로 비율 만 유지하면서 높이 크기를 조정하고 압축하려고합니다.

암호 해독기

여기에서 이미지를 파일에서로드하고 대상 이미지를 덮어 쓰고 소문자 이름을 대문자로 변환하고 있지만 여기에서는 고정 된 크기를 사용하여 크기를 조정하고 높이 260 픽셀로 크기를 조정하고 이미지 너비를 설정하지 않고 종횡비를 유지해야합니다.

//--------------------------------------------------------------------------------//

    private void ProcessImage()
    {
        if (File.Exists(pictureBox1.ImageLocation))
        {
            string SourceImagePath = pictureBox1.ImageLocation;
            string ImageName = Path.GetFileName(SourceImagePath).ToUpper();
            string TargetImagePath = Properties.Settings.Default.ImageTargetDirectory + "\\" + ImageName;
           //Set the image to uppercase and save as uppercase
            if (SourceImagePath.ToUpper() != TargetImagePath.ToUpper())
            {

                using (Image Temp = Image.FromFile(SourceImagePath))
                {
                  // my problem is here, i need to resize only by height
                  // and maintain aspect ratio
                    Bitmap ResizedBitmap = resizeImage(Temp, new Size(175, 260));

                    //ResizedBitmap.Save(@TargetImagePath);
                    ResizedBitmap.Save(@TargetImagePath, System.Drawing.Imaging.ImageFormat.Jpeg);

                }
                pictureBox1.ImageLocation = @TargetImagePath;
                File.Delete(SourceImagePath);
            }
        }
    }
    //--------------------------------------------------------------------------------//
    private static Bitmap 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 b;
    }
    //--------------------------------------------------------------------------------//
dbc

너비를 비례 적으로 유지하면서 이미지를 지정된 높이로 크기를 조정하고 싶습니까?

    /// <summary>
    /// Resize the image to have the selected height, keeping the width proportionate.
    /// </summary>
    /// <param name="imgToResize"></param>
    /// <param name="newHeight"></param>
    /// <returns></returns>
    private static Bitmap resizeImage(Image imgToResize, int newHeight)
    {
        int sourceWidth = imgToResize.Width;
        int sourceHeight = imgToResize.Height; 

        float nPercentH = ((float)newHeight / (float)sourceHeight);

        int destWidth = Math.Max((int)Math.Round(sourceWidth * nPercentH), 1); // Just in case;
        int destHeight = newHeight;

        Bitmap b = new Bitmap(destWidth, destHeight);
        using (Graphics g = Graphics.FromImage((Image)b))
        {
            g.SmoothingMode = SmoothingMode.HighQuality;
            g.InterpolationMode = InterpolationMode.HighQualityBicubic;
            g.PixelOffsetMode = PixelOffsetMode.HighQuality;
            g.DrawImage(imgToResize, 0, 0, destWidth, destHeight);
        }

        return b;
    }

참고- 예외 발생시 처리를 보장하므로 명시 적으로를 삭제하는 대신 문을 Graphics g사용하십시오 using.

업데이트 호출 메서드 내에서 명령문으로 래핑 ResizedBitmap하는 것이 좋습니다 using.

업데이트 2 지정된 최대 크기로 JPG를 저장하는 방법을 찾을 수 없습니다. 할 수있는 일은 지정된 품질로 저장하고 파일이 너무 크면 낮은 품질로 다시 시도하는 것입니다.

    public static void SaveJpegWithSpecifiedQuality(this Image image, string filename, int quality)
    {
        // http://msdn.microsoft.com/en-us/library/ms533844%28v=vs.85%29.aspx
        // A quality level of 0 corresponds to the greatest compression, and a quality level of 100 corresponds to the least compression.
        if (quality < 0 || quality > 100)
        {
            throw new ArgumentOutOfRangeException("quality");
        }

        System.Drawing.Imaging.Encoder qualityEncoder = System.Drawing.Imaging.Encoder.Quality;
        EncoderParameters encoderParams = new EncoderParameters(1);
        EncoderParameter encoderParam = new EncoderParameter(qualityEncoder, (long)quality);
        encoderParams.Param[0] = encoderParam;

        image.Save(filename, GetEncoder(ImageFormat.Jpeg), encoderParams);
    }

    private static ImageCodecInfo GetEncoder(ImageFormat format)
    {
        ImageCodecInfo[] codecs = ImageCodecInfo.GetImageEncoders();
        foreach (ImageCodecInfo codec in codecs)
        {
            if (codec.FormatID == format.Guid)
            {
                return codec;
            }
        }
        return null;
    }

있습니다 크기 조정 알고리즘의 품질 은 AS 같은 것이 아니다 절약의 파일 압축의 품질 . 두 작업 모두 손실발생 합니다. 최상 품질 알고리즘 (위에 표시하도록 업데이트 됨)으로 크기를 조정 한 다음 작동하는 것을 찾을 때까지 저장 품질을 실험하는 것이 좋습니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

이미지를 고정 너비로 조정하지만 가로 세로 비율은 유지하지 않음

분류에서Dev

이미지를 고정 너비로 조정하지만 가로 세로 비율은 유지하지 않음

분류에서Dev

Qt-창과 함께 크기를 조정하고 가로 세로 비율을 유지하는 이미지를 만드는 방법은 무엇입니까?

분류에서Dev

가로 세로 비율을 유지하면서 이미지 크기 조정

분류에서Dev

가로 세로 비율을 유지하면서 4 개의 제약 조건과 너비 또는 높이 매개 변수없이 이미지보기에 맞게 이미지 크기를 조정하는 방법은 무엇입니까?

분류에서Dev

가로 세로 비율과 최소 크기를 유지하면서 여러 이미지를 정사각형으로 만드는 gimp 스크립트

분류에서Dev

가로 세로 비율을 유지하면서 여러 이미지를 상위 높이에 맞추기

분류에서Dev

PNG 이미지의 크기가 조정되고 UIImageView에서 잘 표시되지만 CGContextDrawImage로 그릴 때 품질이 좋지 않은 이유

분류에서Dev

이미지 크기를 조정하고 가로 세로 비율을 유지하는 방법은 무엇입니까?

분류에서Dev

가로 세로 비율을 유지하면서 이미지를 최대 너비 / 최소 너비로 조정

분류에서Dev

만약 angel에서 이미지 구성 요소의 크기를 설정하고 가로 세로 비율을 유지하는 방법

분류에서Dev

가로 세로 비율을 유지하면서 이미지 크기를 화면 너비에 맞게 조정하는 레이아웃 제약

분류에서Dev

페이지 크기를 조정하거나 다른 장치에서 볼 때 가로 세로 비율 유지

분류에서Dev

가로 세로 비율이 1 미만인 이미지의 Matplotlib 컬러 바 높이를 설정하는 방법

분류에서Dev

품질 손실을 최소화하면서 이미지를 가장 낮은 크기로 조정

분류에서Dev

가로 세로 비율을 유지하면서 div 요소의 크기를 자동으로 조정하는 방법은 무엇입니까?

분류에서Dev

flexbox 높이를 유지하면서 항목의 크기를 가로 및 세로로 조정하는 방법

분류에서Dev

ImageView를 고정 높이로 조정하지만 초과 너비 자르기

분류에서Dev

가로 레이아웃 그룹의 자식 레이아웃 요소를 가로 세로 비율을 유지하면서 크기 조정

분류에서Dev

하나의 크기를 조정 한 후 연속 된 나머지 이미지를 마우스로 크기 조정하고 비율을 유지합니다.

분류에서Dev

업로드시 너비를 조정하고 높이 비율을 비례 적으로 유지

분류에서Dev

가로 세로 비율과 위치를 다른 div와 비교하여 유지하면서 div를 세로로 축소하는 방법은 무엇입니까?

분류에서Dev

가로 세로 비율을 유지하면서 브라우저 너비와 높이에 맞게 조정되는 동적 캔버스 / 그리드 / 행 / 열을 만드는 방법은 무엇입니까?

분류에서Dev

가로 세로 비율을 유지하면서 브라우저 너비와 높이에 맞게 조정되는 동적 캔버스 / 그리드 / 행 / 열을 만드는 방법은 무엇입니까?

분류에서Dev

div의 크기를 조정하고 콘텐츠의 가로 세로 비율을 유지하는 방법이 있습니까?

분류에서Dev

이미지 크기를 조정하는 방법은 있지만 자바 스크립트로 비율을 유지합니까?

분류에서Dev

가로 세로 비율을 유지하면서 화면 크기에 따라 CollectionView의 항목 레이아웃 크기 조정 [Swift]

분류에서Dev

가로 세로 비율에 따라 이미지 크기를 조정하고 배치하기 위해 Java에서 무언가를 어떻게 만들 수 있습니까?

분류에서Dev

전체 페이지의 최대 너비 또는 높이를 초과하지 않으면 서 요소의 가로 세로 비율 유지

Related 관련 기사

  1. 1

    이미지를 고정 너비로 조정하지만 가로 세로 비율은 유지하지 않음

  2. 2

    이미지를 고정 너비로 조정하지만 가로 세로 비율은 유지하지 않음

  3. 3

    Qt-창과 함께 크기를 조정하고 가로 세로 비율을 유지하는 이미지를 만드는 방법은 무엇입니까?

  4. 4

    가로 세로 비율을 유지하면서 이미지 크기 조정

  5. 5

    가로 세로 비율을 유지하면서 4 개의 제약 조건과 너비 또는 높이 매개 변수없이 이미지보기에 맞게 이미지 크기를 조정하는 방법은 무엇입니까?

  6. 6

    가로 세로 비율과 최소 크기를 유지하면서 여러 이미지를 정사각형으로 만드는 gimp 스크립트

  7. 7

    가로 세로 비율을 유지하면서 여러 이미지를 상위 높이에 맞추기

  8. 8

    PNG 이미지의 크기가 조정되고 UIImageView에서 잘 표시되지만 CGContextDrawImage로 그릴 때 품질이 좋지 않은 이유

  9. 9

    이미지 크기를 조정하고 가로 세로 비율을 유지하는 방법은 무엇입니까?

  10. 10

    가로 세로 비율을 유지하면서 이미지를 최대 너비 / 최소 너비로 조정

  11. 11

    만약 angel에서 이미지 구성 요소의 크기를 설정하고 가로 세로 비율을 유지하는 방법

  12. 12

    가로 세로 비율을 유지하면서 이미지 크기를 화면 너비에 맞게 조정하는 레이아웃 제약

  13. 13

    페이지 크기를 조정하거나 다른 장치에서 볼 때 가로 세로 비율 유지

  14. 14

    가로 세로 비율이 1 미만인 이미지의 Matplotlib 컬러 바 높이를 설정하는 방법

  15. 15

    품질 손실을 최소화하면서 이미지를 가장 낮은 크기로 조정

  16. 16

    가로 세로 비율을 유지하면서 div 요소의 크기를 자동으로 조정하는 방법은 무엇입니까?

  17. 17

    flexbox 높이를 유지하면서 항목의 크기를 가로 및 세로로 조정하는 방법

  18. 18

    ImageView를 고정 높이로 조정하지만 초과 너비 자르기

  19. 19

    가로 레이아웃 그룹의 자식 레이아웃 요소를 가로 세로 비율을 유지하면서 크기 조정

  20. 20

    하나의 크기를 조정 한 후 연속 된 나머지 이미지를 마우스로 크기 조정하고 비율을 유지합니다.

  21. 21

    업로드시 너비를 조정하고 높이 비율을 비례 적으로 유지

  22. 22

    가로 세로 비율과 위치를 다른 div와 비교하여 유지하면서 div를 세로로 축소하는 방법은 무엇입니까?

  23. 23

    가로 세로 비율을 유지하면서 브라우저 너비와 높이에 맞게 조정되는 동적 캔버스 / 그리드 / 행 / 열을 만드는 방법은 무엇입니까?

  24. 24

    가로 세로 비율을 유지하면서 브라우저 너비와 높이에 맞게 조정되는 동적 캔버스 / 그리드 / 행 / 열을 만드는 방법은 무엇입니까?

  25. 25

    div의 크기를 조정하고 콘텐츠의 가로 세로 비율을 유지하는 방법이 있습니까?

  26. 26

    이미지 크기를 조정하는 방법은 있지만 자바 스크립트로 비율을 유지합니까?

  27. 27

    가로 세로 비율을 유지하면서 화면 크기에 따라 CollectionView의 항목 레이아웃 크기 조정 [Swift]

  28. 28

    가로 세로 비율에 따라 이미지 크기를 조정하고 배치하기 위해 Java에서 무언가를 어떻게 만들 수 있습니까?

  29. 29

    전체 페이지의 최대 너비 또는 높이를 초과하지 않으면 서 요소의 가로 세로 비율 유지

뜨겁다태그

보관