3

わかりましたので、私の問題を説明するために最善を尽くします。このコードを使用して、FrameLayout の「スクリーンショット」を取得しました

/**
 * Function that takes a screenshot of the view passed and returns a bitmap for it.
 *
 * @param view {@link View}
 * @return screenshot of the view passed
 */
public Bitmap screenShot(View view) {
    Bitmap bitmap = Bitmap.createBitmap(view.getWidth(),
            view.getHeight(), Bitmap.Config.ARGB_8888);
    Canvas canvas = new Canvas(bitmap);
    view.draw(canvas);
    return bitmap;
}

これが私のFrameLayoutです

<FrameLayout
    android:id="@+id/frame_layout_picture"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content">

    <ImageView
        android:id="@+id/photoImageView"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:scaleType="fitCenter" />

    <com.my.android.util.DrawCustomView
        android:id="@+id/draw_custom_view"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />
</FrameLayout>

DrawCustomViewにペイントするために使用されphotoImageViewます。

現在、画像をトリミングするためのさまざまなアクティビティもあります。そこで、このビットマップを ( を使用してscreenshot(view)) ファイルに保存し、ファイル パスをこのトリミング アクティビティに送信しました。私のトリミング活動では、https://github.com/ArthurHub/Android-Image-Cropperライブラリを使用CropImageViewして画像をトリミングしています。トリミング アクティビティに送信されたペイント済みの写真をトリミングしようとすると、次のような奇妙なトリミングが行われます。

トリミングしすぎると画像が 2 倍になります: https://drive.google.com/open?id=0B4jK5QX65b0ZSHdMTWIzZXluZXc

拡大前: https ://drive.google.com/open?id=0B4jK5QX65b0ZeUk3NUlGUHRSQ0E

これは、作物活動で通常の写真がどのように表示されるかです: https://drive.google.com/open?id=0B4jK5QX65b0ZNk9oSG1ZaGxYOVk

また、通常の場合、トリミングの境界は画像サイズに制限されていますが、screenshot() を使用して編集すると、境界は画面のサイズになります。

事前にクロップ アクティビティをテストしましたが、カメラから送信された画像では問題なく動作します。スクリーンショット機能を使って取得していない画像も送信してみましたが、Crop アクティビティでは問題なく動作しました。

より多くの情報を提供させていただきます。どんな助けも大歓迎です...私はアンドロイド開発に比較的慣れていません:)

編集

このビデオは、問題のより多くの視点を提供するかもしれません https://drive.google.com/open?id=0B4jK5QX65b0ZSUVFZDlQeTc4QnM

4

2 に答える 2