私は、モバイルカメラから写真をアップロードするプロジェクトを作成しようとしていますが、フロントカメラで撮影したときは逆さになります(特にAndroid)。私はExif.PCLナゲットパッケージを使用するための提案を読んだが、同じものを実装する方法は知らない。誰もがこれで私を助けることができますか? おかげxamarinフォームでExif.PCLを実装する方法は?
答えて
背景
私は私のアプリケーションのいずれかで同じ問題を抱えていました。異なるアプローチを試みた後、私は現在の実装でいくつかの問題を発見しました。一般的に私はXLabsを使用していますが、これにはメディアピッキング機能があります。
問題
それらが取られた後、それは、画像を拡大縮小してautorotatingのサポートを欠いていたすべての最初の。それはあなたの質問です。ですから、まず画像が取り出されるとすぐに後処理を実装しなければなりませんでした。
第2に、AndroidとXamarin.Formsに問題があります。これは、Androidでのアクティビティの処理方法が原因です。 Android上で動作する方法は、実際には別のアプリケーションでホストされているCameraActivityまたはPhotoGalleryActivityを起動することです。これらのアクティビティは、システムメモリの部分的な量を使用しています。このオペレーティングシステムは、あなたのアプリを含む非フォールルプロセスを殺すために努力します:)このためのWorkarroundは、写真を最初から作成することによって、したがって、私は決して私のアプリを残しません、アンドロイドランタイムは私のアプリケーションを殺すことはありません。このすべてをを考慮すると
ソリューション
は、私が撮影の私自身の流れを実装しました。ソースコードHEREが見つかります。基本的なアーキテクチャは次のとおりです: 私はIImageService
を作成しました。カメラやライブラリから画像を取り出す方法があります。
public interface IImageService
{
Task<IImage> GetImageFromLibrary();
Task<IImage> GetImageFromCamera();
}
次に、これをiOSとAndroid用に個別に実装し、依存性注入を使用しました。 iOSではXLabsの実装を使用しているので、問題なく動作します。 Androidの場合、Camera and Libraryから画像をピックするのをサポートするいくつかのアクティビティを作成しました。CameraActivity
、PhotoGaleryActivity
、これは基本的にネイティブ画像ピッキングアクティビティに置き換わります。
イメージを選択した後、スケーリングと回転処理を行います。 iOSの場合GetScaledAndRotatedImage
メソッドを持つUIImageToolbox
静的クラスを作成しました。 Androidの場合BitmapToolbox
staticクラスでGetScaledAndRotatedBitmap
メソッドを持っています。
私のサンプルアプリケーションでは、IImageService
の使用法を示すためにImageViewModel
とImagePage
を作成しました。それは簡単であるはずです。
サンプルアプリケーションの使用方法は?
私は小さな発言をさせてください。 iOSとAndroidの両方でXLabsの実装のみを使用し、BitmapToolbox
とUIImageToolbox
を使用してスケーリングと回転を実装することができます。これはあなたの質問に対する答えです。しかし、あなたのアプリがAndroid上で安定しているようにしたい場合は、ちょっとしたことをする必要があります。
- フォーム、ドロイド、iOSプロジェクトに必要なすべてのナゲットパッケージをインストールします。サンプルアプリケーションで使用されているパッケージは、
packages.config
各プロジェクトのファイル ブロードキャストメッセージ用にMvvmCross Messengerプラグインを使用しています。代替があれば簡単に置き換えることができます。しかし、それを使用する場合は、依存関係を登録することを忘れないでください。
AppDelegate
とMainActivity
DependencyService.Register();
サンプルアプリケーションからフォーム、iOS、Androidプロジェクトに必要なクラスを追加します。 Resharperを使って名前空間を修正することができます。
xamlファイルの場合、ドラッグアンドドロップフォームプロジェクトの既定のビルドアクションとカスタムツールは、間違った値に設定されています。
drawable
、drawable-xxhdpi
、layout
とvalues
フォルダから必要なリソースを追加UpdateDesignTimeXamlアンドロイドプロジェクトの場合:このようにXAMLファイルをクリックし、[プロパティ]を選択し、リソース組み込みにビルドアクション設定、およびのMSBuildのカスタムツール。
grid_cell_photo_galery_item.axmlファイルで、名前空間を修正しました。あなたのネームスペースで
ImageSample.Droid.Views.SquareRelativeLayout
を置き換えてください。Androidの場合、Androidプロジェクトを右クリックし、プロパティを選択してAndroidマニフェストに移動し、CAMERA、READ_EXTERNAL_STORAGE、WRITE_EXTERNAL_STORAGE権限を追加します。
Androidの場合は、Androidプロジェクトを右クリックしてプロパティを選択し、[詳細設定]に移動して[最大ヒープサイズ]を1Gなどに設定します。これはPhotoGalaryActivityが画像を表示するのに相当量のメモリを使用し、すべてだDependencyService.Register<MediaPicker>();
- iOS用
MediaPicker
AppDelegate
中のために依存性の注入を追加することを忘れないでください。- 1. XamarinフォームでCrossPushNotificationプラグインを実装する方法は?
- 2. xamarinフォームでカスタムページレンダラーにマップボックスを実装する方法は?
- 3. CKEditorまたはHTMLエディタをxamarinフォームで実装する方法は?
- 4. Xamarinフォームのコンテキストアクションの実装
- 5. Xamarinフォームでのマーカークラスタリング(Googleマップ)の実装方法
- 6. Xamarin iOS&MVVMCrossでシングルビューを実装する方法は?
- 7. Xamarin PCLで簡単なプログレスバーを実装する方法は?
- 8. Xamarin C#AndroidでCountDownTimerクラスを実装する方法は?
- 9. Xamarinフォーム - ネストされたリストの実装
- 10. XamarinとのView.IOnClickListenerインターフェイスの実装方法
- 11. Xamarinでプログレッシブ画像アップロードを実装する方法
- 12. CrossPlatForm(Xamarin)でカレンダーを実装する方法
- 13. Xamarin androidでサービスを実装する方法
- 14. Xamarinフォームを使用した推測航法アプリケーションの実装
- 15. xamarinフォームでチェックボックスを実装する方法xamarinフォームでxamlを使用してチェックボックスを設計できますか?
- 16. Xamarin igdb apiラッパーインストールパッケージを実装する方法
- 17. DependencyService経由でXamarin NetworkServiceDiscoveryを正しく実装する方法は?
- 18. Xamarin Forms TableViewセルでクリックした行を実装する方法は?
- 19. フォームをタブパネル内に実装する方法は?
- 20. フォームの自動保存を実装する方法は?
- 21. フォーム入力の検証をAngular2で実装する方法
- 22. プリマを使用したXamarinフォームの依存サービスの実装
- 23. xamarinのフォームで2つの日付間でSQLiteクエリを実行する方法
- 24. XamarinフォームのナビゲーションスタックをXamarinドロイドアシストアクティビティからリセットする方法
- 25. Xamarinフォームでページアイコンを設定する方法は?
- 26. xamarinフォームのコンテンツページにタイトルをプログラムで追加する方法は?
- 27. XamarinフォームでViewCellセパレータラインを部分的にカットする方法は?
- 28. xamarinフォームでアンドロイドとIOSデバイストークンを取得する方法は?
- 29. Azure Mobile App for Xamarinフォームでユーザートークンを処理する方法は?
- 30. Xamarinフォームでカスタムバインド可能なビューを作成する方法は?