【发布时间】:2017-05-12 09:48:47
【问题描述】:
好的,所以我会尽力解释我的问题。 我已使用此代码获取 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
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 来裁剪图像。
当我尝试裁剪发送到裁剪活动的绘制照片时,我得到了一个奇怪的裁剪,如下所示:
图像因裁剪过多而加倍: https://drive.google.com/open?id=0B4jK5QX65b0ZSHdMTWIzZXluZXc
放大前: https://drive.google.com/open?id=0B4jK5QX65b0ZeUk3NUlGUHRSQ0E
这是正常图片在裁剪活动中的显示方式: https://drive.google.com/open?id=0B4jK5QX65b0ZNk9oSG1ZaGxYOVk
我还注意到,在正常情况下,裁剪的边界仅限于图像大小,但使用 screenshot() 进行编辑时,边界会占用屏幕的大小。
我事先测试了我的裁剪活动,它适用于从相机发送的图像。 我还尝试发送一张不是使用截图功能获得的图片,并且在裁剪活动中效果很好。
我很乐意提供更多信息,非常感谢任何帮助...我对 android 开发比较陌生 :)
编辑
此视频可能会更深入地了解问题 https://drive.google.com/open?id=0B4jK5QX65b0ZSUVFZDlQeTc4QnM
【问题讨论】:
标签: android bitmap android-canvas android-graphics android-crop