問題預防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