调整生成的相机流的大小

2024-04-07

我试图让用户捕获图像并使用图像将其添加到屏幕上。然而,由于内存限制,我还需要将此图像的大小调整为大约一半大小(12x 5MP 图像在手机上永远不会很好......)

我正在正常启动相机任务,它调用 Completed 事件。但是,当我尝试使用 DecodeJpeg 时,我收到“参数不正确”。例外。

这是我的调整大小的代码,其中 mx 和 my 是 int 尺寸。我已经验证e.ChosenPhoto中有一些长度约为~5500的内容:

WriteableBitmap bitmap = PictureDecoder.DecodeJpeg(e.ChosenPhoto, mx, my);
Image img = new Image();
img.Source = bitmap;

第一行是应用程序崩溃的地方。有任何想法吗?

编辑: PhotoChooserTask 的结果也会发生这种情况......


尝试使用System.Windows.Media.Imaging - Extensions.LoadJpeg http://msdn.microsoft.com/en-us/library/system.windows.media.imaging.extensions.loadjpeg%28v=vs.92%29.aspx方法而不是图片解码器.DecodeJpeg http://msdn.microsoft.com/en-us/library/microsoft.phone.picturedecoder.decodejpeg%28v=vs.92%29.aspx。还要确保流位于流的开头。如果您已经使用过该流,则需要使用以下方法重置它:

MyImageStream.Seek(0, System.IO.SeekOrigin.Begin)

我在尝试访问原始图像时遇到了很多问题,特别是自从 BitmapImage自动调整图像大小超过 2000x2000 http://social.msdn.microsoft.com/Forums/en/wpf/thread/21dbdb45-d49b-486a-83f8-58fb27987c4f。如果您想要大于 2000x2000 的图像,您必须有权访问原始流并将其加载到可写位图对象 http://msdn.microsoft.com/en-us/library/ff967560%28v=vs.92%29.aspx#BKMK_Images

如果您想查看一些更复杂的图像处理代码,包括使用以下命令检测图像流的分辨率ExifLib https://stackoverflow.com/questions/4661825/windows-phone-7-picture-metadata和旋转流使用可写位图扩展 http://writeablebitmapex.codeplex.com/看看条码采集结果 http://silverlightzxing.codeplex.com/SourceControl/changeset/view/3bd7fb2d5eb2#WP7_Barcode_Library/BarcodeCaptureResult.cs类为Silverlight ZXing 库 http://silverlightzxing.codeplex.com/.

UPDATE:由于您想要的只是根据 e.ChosenPhoto 结果调整图像大小,因此我从 Silverlight ZXing 库中提取了代码。这应该有效:

WriteableBitmap wbBarcodeImage = new WriteableBitmap(mx, my);
Extensions.LoadJpeg(wbBarcodeImage, e.ChosenPhoto);//Load JPEG from stream into our re-sized writeable bitmap

请注意,您需要使用正确的高度/宽度比,否则图像的底部或侧面会出现黑条。您可以使用 ExifLib 检测原始图像大小并使用它来缩放(请参阅上面链接的 BarcodeCaptureResult 中的 GetWriteableBitmap 方法)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

调整生成的相机流的大小 的相关文章

随机推荐

  • 在 pygame 物理模拟中添加 wxPython GUI 元素

    我做了一个pygame物理模拟 抛射运动 但它缺乏交互性 比如接受发射角度 速度等 我想添加带有增加 减少箭头的输入框 但不知道如何去做 谢谢您的帮助 也许你可以尝试PGU http www pygame org project 108 菲
  • Java 无法通过 JDBC-ODBC 从 Access 检索 Unicode(立陶宛语)字母

    我有数据库 其中一些名称是用立陶宛字母写的 但是当我尝试使用 java 获取它们时 它会忽略立陶宛字母 DbConnection zadanie connect createStatement ResultSet TYPE SCROLL I
  • 如何定义和使用 Common Lisp 包(库)?

    我在几个 Lisp 源文件中开发了一些 Common Lisp 函数 我希望这些函数可以轻松地供我编写的其他函数使用 或者如果我认为它们对其他人有用的话 可以在 github 上提供 现在 我只是将它们放在一些预定义的文件夹中并使用 req
  • Excel:将两列合并为具有交替值的一列

    如何将两列数据合并为一列 如下所示 Col1 Col2 Col3 A 1 A B 2 1 C 3 B 2 C 3 您可以在列中使用以下公式D按照我的例子 请记住增加 A 1 B 6根据您的数据范围 INDEX A 1 B 6 INT ROW
  • const 值会按实例存储吗?

    对于这样的类型 public class BlurEffect public const string Name Blur public int Amount get set 我有几个成员 比如 Name 所有成员都相同 我应该将其设为静态
  • UIButton 状态的键值观察

    UIButton 有一个状态属性 所有帐户似乎都符合 KVO 并且没有文档表明其他情况 但是 当我将观察者添加到 UIButton 的状态属性时 观察者回调从未被调用 怎么会 如果你查看 UIControl 的文档 state 属性被标记为
  • CSS 无法在生产中加载 - 开发中一切正常(Rails 4.1、Capistrano 3;bootstrap),更新:nginx 配置问题

    问题如下 在开发中一切正常 但是当我将 Rails 应用程序部署到生产环境时 该网站以纯 html 格式运行 但 CSS 引导程序 未加载 JS 可能也未加载 抱歉 我花了 2 天时间寻找了大约 15 种可能的解决方案 但无法使其发挥作用
  • 在 Visual Studio 外部启动时程序运行速度较慢

    我注意到我的程序有一些奇怪的行为 我使用 Visual Studio Professional 2013 Update 1 用 C 编写它 它由一个 exe 应用程序组成 该应用程序链接多个 DLL 并调用这些 DLL 中定义的函数 在我的
  • 如何在 MySQL 中造成死锁以进行测试

    我想让我的 Python 库与 MySQLdb 一起使用 能够检测死锁并重试 我相信我已经编写了一个很好的解决方案 现在我想测试它 对于我可以使用 MySQLdb 运行来创建死锁条件的最简单查询 有什么想法吗 系统信息 MySQL 5 0
  • Ruby 中“触发器已弃用”警告的解决方法

    我从 shell 脚本中调用 Ruby 如下所示 ruby n e print if r fromre r tore 从 Ruby 2 6 开始 我收到警告 警告 触发器已被弃用 所以看来我必须做好准备 明智的 Ruby 大祭司已经决定这个
  • 跳过第一个元素之后的所有其他元素[重复]

    这个问题在这里已经有答案了 我知道如何在 Java 中做到这一点 但我正在学习 Python 不知道如何做到这一点 我需要实现一个函数 该函数返回一个列表 其中包含列表中的所有其他元素 从第一个元素开始 到目前为止 我不确定如何从这里开始
  • 为什么 C++ 中的字符数组接受非 ASCII 字符?

    所以 我希望能够在我的 C 程序中使用中文字符 并且我需要使用某种类型来保存超出 ASCII 范围的此类字符 但是 我尝试运行以下代码 并且它有效 include
  • Perl:查找数组的特定元素是否是单词或句子

    我有一个包含文本文件的数组 那么如何使用 perl 查找仅包含一个单词的数组元素 假设文件内容存储在 lines my words grep S lines Note 别忘了chomp lines 在进行任何进一步处理之前
  • CSS强制浏览器显示滚动条

    我编写了一个 Web 应用程序 发现当我调整页面大小时 浏览器不会随着窗口缩小而显示它自己的滚动条 这会阻止用户访问内容 我已将正文宽度设置为 500px 并将导航栏设置为white space nowrap 如何让浏览器识别出屏幕右侧有内
  • Android 中片段中按钮的按钮侦听器

    我是 Android 新手 正在尝试自学 但我在 Fragments 方面遇到了困难 我正在创建一个简单的应用程序来学习片段 我认为这可能看起来很愚蠢 但我真的无法让它发挥作用 我想做的就是单击 Fragment One 中的按钮 butt
  • 如何从 &Vec 或 Vec<&T> 创建 &T 的迭代器?

    我有一个有两个变体的枚举 它要么包含对Vec of Strings 或者它包含一个Vec的参考文献Strings enum Foo lt a gt Owned a Vec
  • 在 Android 上用 Java 获取 SQLite SUM

    我是 SQLite 和 Java 的新手 我正在尝试即时学习 我有一列包含一些数值 我想获取它的总和并将其显示在文本视图中 我当前的代码是这样的 public Cursor getTotal return sqliteDatabase2 r
  • 如何根据 DataAnnotation 中的另一个属性验证一个属性

    考虑我有这两个属性 public class Test Required ErrorMessage Please Enetr Age public System Int32 Age get set Required ErrorMessage
  • 在大型 PR 堆栈中深度重命名变量

    我有一个包含 100 次提交的 PR 它将作为许多较小的 PR 提交 在 PR 堆栈的底部 我选择了一个现在觉得很奇怪的变量名称 并且希望在每次提交期间更改它 但不想在各处繁琐地解决合并冲突 有没有办法自动执行此操作 使用一些 cli 命令
  • 调整生成的相机流的大小

    我试图让用户捕获图像并使用图像将其添加到屏幕上 然而 由于内存限制 我还需要将此图像的大小调整为大约一半大小 12x 5MP 图像在手机上永远不会很好 我正在正常启动相机任务 它调用 Completed 事件 但是 当我尝试使用 Decod