将效果应用于高清图像

时间:2016-05-02 11:40:30

标签: java android

我正在开发一款处理图片并在图片上应用滤镜,边框等的应用程序..(例如照片编辑应用)。

在将滤镜或边框应用于高清图像时,我遇到了问题(因为图像的大小和分辨率会不同)。

我的问题是如何在不改变图像大小或尺寸的情况下应用滤镜。 请帮忙解决这个问题,提前致谢。

正如我在代码的评论部分中提到的,对于较小尺寸的图像,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;
}

1 个答案:

答案 0 :(得分:1)

您必须面对的是图像处理技术的Android资源问题。对您而言,最好的建议是转向NDK并使用OpenCV在JNI中编写图像过滤器。

这是在高清图像中获得更快结果的最佳选择。任何如何处理图像的分辨率必须有边界,因为所有专业应用程序都会创建自己的边界参数。