android-调用截图获取图片白色边浅绿

这两天做涂鸦的题目,实现方案为从网上加载一张图,然后再图片上蒙一层透明层,在上面涂鸦,涂鸦完成之后,通过截图保存图和涂鸦到一张图上,达到所画即所得的效果。

但是实现后遇到了这个坑,花了一天时间终于找到原因。
首先看我的实现
布局文件

<RelativeLayout android:id="@+id/doodle_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerVertical="true">
<ImageView android:id="@+id/write_iv_img"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#FFFFFF"
android:adjustViewBounds="true" //达到图片match_parent效果
/>
<com.wl.base.doodle.DoodleImageView
android:id="@+id/doodle_paint"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignLeft="@id/write_iv_img"
android:layout_alignRight="@id/write_iv_img"
android:layout_alignTop="@id/write_iv_img"
android:layout_alignBottom="@id/write_iv_img">
</com.zuoyeben123.base.doodle.DoodleImageView>
</RelativeLayout>

代码加载

ImageLoader.getInstance().displayImage(mUrl, mIvImg);

截图代码

Bitmap bm = Bitmap.createBitmap(mDoodleContainer.getWidth(), mDoodleContainer.getHeight(), Bitmap.Config.ARGB_8888);
//使用Canvas,调用自定义view控件的onDraw方法,绘制图片
Canvas canvas = new Canvas(bm);
mDoodleContainer.draw(canvas);

其实和调用getDrawingCache效果一致。

按照上面的代码出来的效果就是白色的图片截出图来会发绿。

问题解决

首先出现这个问题的原因是我用了ImageLoader 并且为了节省内存,display 我用的是RGB_565,问题就在这个RGB_565上面。

下面是解决办法:

DisplayImageOptions options = new DisplayImageOptions.Builder()
.cacheInMemory(true)
.cacheOnDisk(true)
.imageScaleType(ImageScaleType.IN_SAMPLE_INT)//设置图片以如何的编码方式显示
.bitmapConfig(Bitmap.Config.ARGB_8888)
.build();
ImageLoader.getInstance().displayImage(mUrl, mIvImg, options);

这样修改后,问题就解决了。出坑~~~

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容