を縮小からFireMonkeyの防止:は、問題の写真
私は写真を撮るために必要FireMonkeyの(XE 10.1ベルリン)でモバイルアプリを持っています。問題は、FireMonkeyが、少なくともAndroidでは、私の画像サイズをはるかに小さくするように見えるということです。 私自身のアプリだけでなく、FireMonkeyに付属のPhotoEditorデモアプリでも起こるとは限りません。
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ファイルを参照します。コールスタックのさらに下探し
は、私は、この手順はFMX.Platform.Android.pas
に住んでいる
procedure TFMXNativeActivityListener.onReceiveImagePath(ARequestCode: Integer; AFileName: JString);
への呼び出しを参照してください。 このプロシージャの宣言を見ると、キーワードcdecl
が続きます。これは、このメソッドがネイティブAndroidコードから呼び出されたことを意味する可能性があります。
私はまたthis tutorialを見ました。ここでは、手順はIFMXCameraService.TakePhoto
です。 PhotoEditorのデモで使用されているのはではなく、です!
RequiredResolution
フィールドを含むパラメータでレコードを取得するため、これを使用するオプションがあります。しかし、私はPhotoEditorのデモと同様のアプローチを使用することをお勧めします。
質問:
FireMonkeyが写真を縮小するのを防ぐにはどうしたらいいですか?
IFmXCameraService.TakePhotoをTParamsPhotoQueryと一緒に使用する場合、maxwidthとmaxheightを設定する方法はありますか? – sandman