【问题标题】:save image with camera without compress image用相机保存图像而不压缩图像
【发布时间】:2012-09-28 18:18:30
【问题描述】:

在我的应用程序中,我想用相机拍照并将它们保存在文件中。 照片质量在我的应用程序中非常重要,所以当我压缩保存它时,图像质量会丢失。 这是我的代码:

 protected override void OnActivityResult(int requestCode, Result resultCode, Intent data)
    {
       base.OnActivityResult(requestCode, resultCode, data);
        FileOutputStream outStream = null;
       saveFullImage();
       if ((requestCode == TAKE_PICTURE))
       {

           if (data != null)
           {
               if (data.HasExtra("data"))
               { 
                   Bitmap pic = (Bitmap)data.Extras.Get("data");



                   System.IO.MemoryStream baos = new System.IO.MemoryStream();
                   pic.Compress(Bitmap.CompressFormat.Png, 100, baos);
                   byte[] byte_img_data = baos.ToArray();
                   outStream = new FileOutputStream(outputFileUri.Path);

                   outStream.Write(byte_img_data);
                   outStream.Close();



               }
           }
       }
    }

请帮助我。 谢谢。

【问题讨论】:

  • 请你把这两张图片贴出来:压缩前和压缩后给别人看看质量损失是多少?
  • 带相机的原始图像大小为 789 kb,但当我将其压缩为 77 kb 时

标签: c# android camera


【解决方案1】:
pic.Save("yourfilenamehere.png", ImageFormat.Png);

如果你知道你在一个文件上写就足够了(检查 Image 类的 Save 方法是否有其他重载)。

这种压缩是无损的,因此您不应该以这种方式丢失任何细节。

【讨论】:

    【解决方案2】:

    谢谢大家。

    使用以下代码不会改变图片细节:

    var mediaScanIntent = new Intent(Intent.ActionMediaScannerScanFile);
    var contentUri = Android.Net.Uri.FromFile(_file);
    mediaScanIntent.SetData(contentUri);
    this.SendBroadcast(mediaScanIntent);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-10-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多