2013-01-14 29 views
3

從文件對話框中讀取後,我想調整圖片大小。我已經完成了以下代碼。現在我想調整圖片流。我該怎麼做?調整圖像大小的字節[]

Stream stream = (Stream)openFileDialog.File.OpenRead(); 
byte[] bytes = new byte[stream.Length]; 
+0

http://programmerpayback.com/2010/01/21/use-silverlight-to-resize-images-and-increase-compression-before-uploading/ – ken2k

+0

http://stackoverflow.com/a/14316695/922198 –

+0

第一鏈接解決我的問題。謝謝ken2K – decoder

回答

4

沒有必要申報byte[],調整圖像的大小隻使用

Image image = Image.FromFile(fileName); 

檢查this other answer來看看如何縮放圖像aftewards

2

試試這個

public static Image ScaleImage(Image image, int maxWidth, int maxHeight) 
    { 
     var ratioX = (double)maxWidth/image.Width; 
     var ratioY = (double)maxHeight/image.Height; 
     var ratio = Math.Min(ratioX, ratioY); 

     var newWidth = (int)(image.Width * ratio); 
     var newHeight = (int)(image.Height * ratio); 

     var newImage = new Bitmap(newWidth, newHeight); 
     Graphics.FromImage(newImage).DrawImage(image, 0, 0, newWidth, newHeight); 
     return newImage; 
    } 

用法

 Image img = Image.FromStream(stream); 
     Image thumb = ScaleImage(img); 
     stream.Close(); 
     stream.Dispose(); 
     stream = new MemoryStream(); 
     thumb.Save(stream, System.Drawing.Imaging.ImageFormat.Png); 
0

我有一個圖片框。我加載一個圖像,調整大小並傳遞給最後發送給sqllite的字節。也許它可能會對你有所幫助代碼如下。

private static byte[] byteResim = null; 

    private void btnResimEkle_Click(object sender, EventArgs e) 
    { 
     openFileDialog1.Title = "Resimdosyası seçiniz."; 
     openFileDialog1.Filter = "Resim files (*.jpg)|*.jpg|Tüm dosyalar(*.*)|*.*"; 
     if (openFileDialog1.ShowDialog() == DialogResult.OK) 
     { 

      string resimYol = openFileDialog1.FileName; // File name of the image 

      picResim.Image = Image.FromFile(resimYol);// picResim is name of picturebox 
      picResim.Image = YenidenBoyutlandir(new Bitmap(picResim.Image)); //this method resizing the image 
      Image UyeResim = picResim.Image; // and this four block converting to image to byte 
      MemoryStream ms = new MemoryStream(); 
      UyeResim.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg); 
      byteResim = ms.ToArray(); // byteResim variable format Byte[] 

     } 
    } 



    Image YenidenBoyutlandir(Image resim)// resizing image method 

    { 
     Image yeniResim = new Bitmap(150, 156); 
     using (Graphics abc = Graphics.FromImage((Bitmap)yeniResim)) 
     { 
      abc.DrawImage(resim, new System.Drawing.Rectangle(0, 0, 150, 156)); 
     } 
     return yeniResim; 
    }