问题预防FireMonkey:从萎缩照片
我在FireMonkey移动应用(XE 10.1柏林),需要拍照。问题在于FireMonkey似乎重新调整了我的照片尺寸,至少在Android上,尺寸要小得多。 我不仅在自己的应用程序中看到这种情况,而且在FireMonkey附带的PhotoEditor Demo应用程序中。
当我用FireMonkey外部的相机拍摄照片时,图像大小约为6-7 Mb,大小为5184 x 2916像素。
当我使用我的应用程序拍摄照片或使用PhotoEditor演示应用程序时,图像尺寸介于140和180 kB和365 x 648像素之间。
这发生在Android上;我没有Mac系统,所以目前我无法在iPad或iPhone上测试它。
我到目前为止已经发现:
我已经设置断点在代码中找出发生这种情况。当调用OnDidFinishTaking
事件处理程序时,它收到的图像已经收缩。
该事件从procedure TImageManagerAndroid.DidReceiveBitmap(const Sender: TObject; const M: TMessage);
调用FMX.MediaLibrary.Android.pas
。 在这种情况下,我看行:
Photo := TBitmap.CreateFromFile(ImagePath);
ImagePath
指的是设备上的.jpg文件,这已经是今非昔比。
进一步向下看调用堆栈,我看到
procedure TFMXNativeActivityListener.onReceiveImagePath(ARequestCode: Integer; AFileName: JString);
调用这个程序住在FMX.Platform.Android.pas
。 查看此过程的声明时,我看到它后面跟着关键字cdecl
,这可能暗示此方法是从本机Android代码调用的。我也看过this tutorial。这里使用IFMXCameraService.TakePhoto
程序。值得注意的是这个是而不是用于PhotoEditor演示!
这可能是一个选项,因为它需要一个包含RequiredResolution
字段的参数的记录。但是,我宁愿使用类似于PhotoEditor演示的方法。
问题:
如何防止FireMonkey缩小我的照片?
嗨有没有一种方法来设置maxwidth和maxheight如果您使用IFAMXCameraService.TakePhoto与TParamsPhotoQuery? – sandman