我正在开发一款处理图片并在图片上应用滤镜,边框等的应用程序..(例如照片编辑应用)。
在将滤镜或边框应用于高清图像时,我遇到了问题(因为图像的大小和分辨率会不同)。
我的问题是如何在不改变图像大小或尺寸的情况下应用滤镜。 请帮忙解决这个问题,提前致谢。
正如我在代码的评论部分中提到的,对于较小尺寸的图像,getDrawingCache返回一个值,但对于较大尺寸的图像,它返回null。
public Bitmap getBorderAppliedBitmap(PorterShapeImageView imgView , GPUImage gpuImage)
{
Bitmap bmp = gpuImage.getBitmapWithFilterApplied();
imgView.setImageBitmap(bmp);
imgView.setDrawingCacheEnabled(true);
imgView.measure(View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED),
View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED));
imgView.layout(0, 0,
imgView.getMeasuredWidth(), imgView.getMeasuredHeight());
imgView.buildDrawingCache(true);
Bitmap bmap = Bitmap.createBitmap(imgView.getDrawingCache());
<!-- getting null from the method imgView.getDraingCache() only for the bigger size Images -->
imgView.setDrawingCacheEnabled(false);
return bmap;
}