在Firemonkey中拍照并保存照片

3

我使用Firemonkey XE5拍照并保存到设备上。我使用标准操作TakePhotoFromCameraActionon DidFinishTaking get TBitmap。这是可以的,但当我尝试使用

ImageContainer.Bitmap.SaveToFile(System.IOUtils.TPath.GetDocumentsPath + System.SysUtils.PathDelim + 'myfile.bmp');

什么也没有发生。图片没有被存储,但是应用程序似乎在运行 - 我可以拍下另一张照片。

如何解决这个问题?

2个回答

1
我之前也遇到过相同的问题。在跟踪FMX.Graphix.TBitmap.SaveToFile函数和FMX.Graphix.TBitmapCodecManager.SaveToFile函数后,我发现这个函数返回False,原因是:
if SameText(ExtractFileExt(AFileName), Descriptor.Extension, loUserLocale) and Descriptor.CanSave then

如果条件返回False,那是因为Descriptor.Extension是'.jpg'而不是'.bmp'。因此,解决方案是使用'.jpg'扩展名的文件或在SaveToFile函数中使用SaveParams(默认值= nil)参数来匹配bmp类型。

嗨Oussama...感谢您的回答,但我不确定我是否理解/您的解决方案是否有效...我将扩展名更改为jpg,但没有帮助。现在我有 ImageContainer.Bitmap.SaveToFile(System.IOUtils.TPath.GetDocumentsPath + System.SysUtils.PathDelim + 'myfile.jpg');但仍然不行。你的代码是什么?你能分享给我吗? - Mariusz Stefaniak
我的代码是: ImageFile := System.IOUtils.TPath.Combine(System.IOUtils.TPath.GetSharedDownloadsPath, 'MyImage.jpg'); ImageControl.Bitmap.SaveToFile(ImageFile); 它对我来说工作得很好。 如果对你来说不起作用,我建议你追踪一下SaveToFile函数并找出问题所在。 - Oussama Al Rifai
我遇到了同样的问题。追踪到 TBitmapCodecManager.FindWritableCodecClass 函数,发现此函数只支持保存 png、jpg、jpeg 格式,不支持 bmp 格式。因此,当我将文件扩展名更改为 .jpg 时,成功保存了文件。你能信吗? - Frank Pedro

1

我遇到了类似的问题,但它不是保存的问题。我的问题实际上是设备通过USB连接到我的电脑。我在文件资源管理器中打开设备,但无法看到我刚保存的图片。然后我断开了设备并重新连接,打开了一个新的文件资源管理器,图片就出现了....


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接