【问题标题】:Taking and saving pictures in Firemonkey在 Firemonkey 中拍摄和保存照片
【发布时间】:2013-10-20 21:03:52
【问题描述】:

我使用 Firemonkey XE5 拍照并保存到设备。我使用标准操作TakePhotoFromCameraActionon DidFinishTaking get TBitmap。没关系,但是当我尝试使用

存储这张图片时
ImageContainer.Bitmap.SaveToFile(System.IOUtils.TPath.GetDocumentsPath + System.SysUtils.PathDelim + 'myfile.bmp');

什么都没有发生。图片未存储,但应用程序似乎正在运行 - 我可以再拍一张。

如何解决?

【问题讨论】:

    标签: image delphi camera save firemonkey


    【解决方案1】:

    我之前也遇到过同样的问题。 在 FMX.Graphix.TBitmap.SaveToFile 中跟踪 SaveToFile 函数,然后到 FMX.Graphix.TBitmapCodecManager.SaveToFile函数,我发现这个函数返回 False 因为:

    if SameText(ExtractFileExt(AFileName), Descriptor.Extension, loUserLocale) and Descriptor.CanSave then
    

    if 条件返回 False,因为 Descriptor.Extension 是 '.jpg' 而不是 '.bmp'

    所以解决方案是使用'.jpg'文件扩展名或在SaveToFile函数中使用SaveParams (Default = nil)参数来匹配bmp类型。

    【讨论】:

    • 嗨 Oussama...感谢您的回答,但我不确定我是否理解/您的解决方案是否有效...我将扩展名更改为 jpg,但没有帮助。现在我有 ImageContainer.Bitmap.SaveToFile(System.IOUtils.TPath.GetDocumentsPath + System.SysUtils.PathDelim + 'myfile.jpg');还是不行。你的代码是什么?可以分享给我吗?
    • 我的代码是:ImageFile := System.IOUtils.TPath.Combine(System.IOUtils.TPath.GetSharedDownloadsPath, 'MyImage.jpg'); ImageControl.Bitmap.SaveToFile(ImageFile);这对我来说可以。如果它不适合您,我建议您将其追溯到 SaveToFile 函数并找出问题所在。
    • 我遇到了同样的问题。追踪到TBitmapCodecManager.FindWritableCodecClass,这个函数只支持保存png;jpg;jpeg。不是 bmp,所以当我将文件扩展名更改为 .jpg 时,它保存了。你能相信吗?
    【解决方案2】:

    我有类似的问题,但是,这不是保存问题。我的问题实际上是该设备通过 USB 连接到我的计算机。我在文件资源管理器中打开了设备,但看不到刚刚保存的图片。然后我断开设备并再次连接,打开一个新文件资源管理器,然后他们在哪里......

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多