1

私は、写真を撮ってトリミングし、いくつかの追加処理を行う Android アプリの真っ只中にいます。独自のクロッピング システムを実行したいと考えていましたが、別の場所でテストすると問題が発生します。画像が回転して見える場合もあれば、正しくトリミングされていない場合もあります (余分な余白がある (元の画像の余分なスペースが見える) など)。

さらに、Intents の使用を検討しました。これにより、写真撮影の狂気やトリミングから解放され、まだ実装していない興味深い「ギャラリーから取得」オプションが追加されます。クロップ インテントはすべての Android にあるとは限りません(通常のカメラ アプリに付属しており、一部のデバイスにはそれがないため)、外部ライブラリも必要です。

ただし、切り抜きと写真撮影の使用方法は「自動」でした。つまり、1 つのボタンで (カメラの正方形のビューから) 正方形の写真を撮影し、同時に切り取られます (後処理も行われます)。ユーザーを発行せずに、私が見た作物ライブラリはそのようには機能しません(新しいアクティビティを開きます)。

ここで問題が発生します: Intents (および/または外部ライブラリ) に作業を任せてアプリのロジックを再考するか、または現在のコードに固執し、表示されたときにエッジケースの変更を行う方が良いでしょうか (一部でローテーションします)。他のデバイスではなく、別の方法でトリミングするなど)?

PD: この質問は他の質問ほど開発に密着していないかもしれませんが (コード行がない > SO! と言う人もいます)、それは実際にはコーディングにも関連するものなので、質問するより良い場所が見つかりません。 .

4

2 に答える 2

1

Facebook と Instagram は、独自のライブラリまたはサードパーティのコードを使用して成功しています。独自のクロッピング ライブラリの作業をすでに開始しているので、境界線のケース、最適化、および回避策がそこにあることは間違いありませんが、制御できることは間違いありません。たとえば、あなたが話した向きの問題は、次のように処理できます。

orientationColumnIndex = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.ORIENTATION);     

cursor.getInt(orientationColumnIndex)
if(orient == 90 || orient == 180 || orient == 270 ){
  Matrix matrix = new Matrix();
  matrix.postRotate(orient);
  result = Bitmap.createBitmap(result, 0, 0, 4*screenWidth/15, 4*screenWidth/15, matrix, true);
}

あなたが提案したように、クロッピングにデフォルトのAndroidインテントを使用することは、幅広い潜在的なユーザーベース向けに作成されたアプリにとってあまり信頼できません。

于 2013-05-06T11:17:20.620 に答える