2014-03-04 40 views
1

我想在windows phone中移植我的应用程序。我要上传服务器上的图像,它是在小尺寸对于上载我做这件事的寡妇成功,但问题是,当我在它失败..这是我的Windows程式如何在Windows Phone中减小图像的大小

public void CompressImage(int i, int j) 
     { 
      bmp1.SetPixel(j, i, Color.FromArgb(bmp.GetPixel(j, i).R, bmp.GetPixel(j, i).G, bmp.GetPixel(j, i).B)); 
     } 



     private void bLoadImage_Click(object sender, EventArgs e) 
     { 
      OpenFileDialog file = new OpenFileDialog(); 
      if (file.ShowDialog() == DialogResult.OK) 
      { 
       pictureBox1.Image = new Bitmap(file.FileName); 
      } 
     } 


     private void bCompression_Click(object sender, EventArgs e) 
     { 
      bmp = new Bitmap(pictureBox1.Image); 
      bmp1 = new Bitmap(bmp.Width, bmp.Height); 
      for (int i = 1; i < bmp.Height; i++) 
       for (int j = 1; j < bmp.Width; j++) 
       { 
        CompressImage(i, j); 
       } 
      pictureBox2.Image = bmp1; 
      bmp1.Save("Picture.jpeg", System.Drawing.Imaging.ImageFormat.Jpeg); 
     } 

搜索后在谷歌我发现,Windows Phone不支持位图..任何想法如何我可以做同样的事情在Windows手机或任何其他替代品做到这一点

回答

1

您应该使用WriteablBitmap以减少图像的大小。 WriteablBitmap在windows phone中有一些图像方法Here更多关于writeablebitmapex。

+0

是的,我已经看到这个链接之前,当我创建一个WriteableBitmap的对象,我在它看到很少的方法.. –

+0

@MashhoodAdeeb WriteableBitmapExtensions已调整大小的方法,这对你很有帮助。 – Jaihind

+0

这是我在添加对我的项目的引用时得到的错误**无法添加对较高版本或兼容性程序集的引用** @Jaihind WriteableBitmapExtensions –

0

当你正在拍照时,你可以选择分辨率与哪个照片将被拍摄。这可以通过

PhotoCamera cam; 

做相机initizalition后。

以下代码时,图像捕捉(在捕捉图像的方法)

IEnumerable<Size> resList = cam.AvailableResolutions; 

Size res; 
if (resList.Count() > 0) 
{ 
    res = resList.ElementAt<Size>(0); 
    cam.Resolution = res; 

} 

该样本选择的第一项决议

+0

对不起,我不明白你的答案,我应该设置相机的属性之前,它捕捉图像....或者它应该减少图像的大小?? –

+0

是的,您可以在相机初始化(在这种情况下的分辨率)下设置相机属性,以小分辨率捕捉图像,这将自动为您提供更小尺寸的图像 –

+0

我已修改答案以使其更清晰。 –

0

尝试将原始图像加载到WriteableBitmap对象,然后使用System.Windows.Media.Imaging命名空间中的SaveJpeg()扩展方法来保存缩小大小的新图像。例如:

....... 
WriteableBitmap wb = new WriteableBitmap(bitmapImageObject); 
wb.SaveJpeg(stream, 120, 160, 0, 100); 
....... 
0

您可以试试这个。它为我工作。它将我的9.70MB文件缩减为270KB。

WriteableBitmap cameraCapturedImage = PictureDecoder.DecodeJpeg(e.ChosenPhoto, 1024, 1024); 

using (IsolatedStorageFileStream myFileStream = myStore.CreateFile(fileName)) 
{ 
    System.Windows.Media.Imaging.Extensions.SaveJpeg(cameraCapturedImage, myFileStream, cameraCapturedImage.PixelWidth, cameraCapturedImage.PixelHeight, 0, 85); 
    myFileStream.Close(); 
} 

N.B:fileName是保存缩小图像文件的名称。

相关问题