How to Change Size of Image?

Total Post:135

Points:947
WPF 
WPF
 1478  View(s)
Ratings:
Rate this:

I am getting an image from the CameraCaptureTask, and I would like to be able to make the image much smaller before saving. The width and height are automatically set to the highest resolution, which is much more than what I need. I have been trying to get the image, change the dimensions, and then attempt to save, although I am getting errors.

MainPage.xaml.cs

private void cameraTask_Completed(object sender,PhotoResult e)
    {
        if(e.TaskResult == TaskResult.OK)
        {
            BitmapImage bmi = new BitmapImage();
            bmi.SetSource(e.ChosenPhoto);
            //MessageBox.Show(bmi.PixelWidth.ToString() + "x" +bmi.PixelHeight.ToString());
            var gcd= GCD(bmi.PixelWidth, bmi.PixelHeight);
            varresult = string.Format("{0}:{1}", bmi.PixelWidth / gcd,bmi.PixelHeight / gcd);
            WriteableBitmap wb;            Stream stream;
            switch(result)
            {                case "3:4":                    wb = new WriteableBitmap(480,640);
                    break;
                case "4:3":
                    wb = new WriteableBitmap(640,480);
                    break;
                case "9:16":
                    wb = new WriteableBitmap(448, 800);
                    break;
                case "16:9":
                    wb = new WriteableBitmap(800, 448);
                    break;
            }
            //Set the wb to the original stream?
            wb.SetSource(e.ChosenPhoto); //ERROR saying Use of unassigned local variable 'wb'
            //Convert the wb to a stream for saving stream= new MemoryStream(wb.ToByteArray());
//Need to replace the following line with the new image stream for saving?
            //var capturedPicture = new CapturedPicture(e.OriginalFileName, e.ChosenPhoto);  
            var capturedPicture = new CapturedPicture(e.OriginalFileName, stream);         
        }
    }
    public int GCD(int a, int b)
    {
        while (a != 0 && b != 0)
        {     
            if (a > b)
                a %= b;
            else
                b %= a;
        }
        if (a == 0)
            return b;
        else
            return a;
    }
  1. Post:378

    Points:2694
    Re: How to Change Size of Image?

    Use the overloaded Bitmap constructor to create a re-sized image, the only thing you were missing was a cast back to the Image data type:

    public static Image resizeImage(Image imgToResize, Size
    size)
    {
       return (Image)(new Bitmap(imgToResize, size));
    }
    yourImage = resizeImage(yourImage, new Size(50,50));

      Modified On Mar-31-2018 01:23:58 AM

Answer

NEWSLETTER

Enter your email address here always to be updated. We promise not to spam!