如何在位图上应用不同的图像效果(滤镜),如棕褐色、黑白、模糊等? [关闭]

Posted

技术标签:

【中文标题】如何在位图上应用不同的图像效果(滤镜),如棕褐色、黑白、模糊等? [关闭]【英文标题】:How to apply different image effects (filters) on bitmap like sepia, black and white, blur, etc.? [closed] 【发布时间】:2013-04-23 21:59:12 【问题描述】:

我不知道如何对图像应用不同的效果,

我在效果类中看到了EffectFactory 类和Effect 类有一种方法apply 但我不确定在 inputTexId 和 optputTexId 中传递什么,以及从哪里获取新的更新图像,如何将更新的图像存储在 imageView 中,

请帮助我解决这个问题。 是否有任何开源库可用于提供图像效果。

谢谢,

【问题讨论】:

【参考方案1】:

我已经实现了Jerry's Java Image Processing Library。对我来说很好。

下载AndroidJars

编辑

Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher);
//Find the bitmap's width height
int width = androidUtils.getBitmapOfWidth(getResources(), R.drawable.ic_launcher);
int height = AndroidUtils.getBitmapOfHeight(getResources(), R.drawable.ic_launcher);
//Create a filter object.
GaussianFilter filter = new GaussianFilter();
//set???? function to specify the various settings.
filter.setRadius(8.5f);
//Change int Array into a bitmap
int[] src = AndroidUtils.bitmapToIntArray(bitmap);
//Applies a filter.
filter.filter(src, width, height);
//Change the Bitmap int Array (Supports only ARGB_8888)
Bitmap dstBitmap = Bitmap.createBitmap(src, width, height, Config.ARGB_8888);

通过 Android-jhlabs

了解更多详细信息

【讨论】:

你是在面向java的应用程序还是android应用程序中实现的 对于android我的朋友,还没有在面向Java的应用程序中。他们正在对“图像”的“整数数组”进行操作。坏消息是该库是专门为 android 设计的。但是我们仍然可以从 java 文件中获取逻辑。 你能举个例子如何使用这个库和位图。 @ChintanRathod thanx 先生,我会试试,如果有任何问题,我会问 感谢我参考AndroidUtils类..github.com/mordonez-me/instagram-filters-jhlabs-android/blob/…【参考方案2】:

您可以使用 Catalano 框架:

http://code.google.com/p/catalano-framework/

FastBitmap image = new FastBitmap(bitmap);
image.toRGB();

//Sepia
Sepia sepia = new Sepia();
sepia.applyInPlace(image);

//Blur
Blur blur = new Blur();
blur.applyInPlace(image);

//Emboss
Emboss emboss = new Emboss();
emboss.applyInPlace(image);

//Retrieve bitmap
bitmap = fb.toBitmap();

【讨论】:

您的框架的性能如何?我刚开始测试一些图像过滤器,使用code.google.com/p/android-jhlabs 对我尝试的一种过滤器类型进行了非常糟糕的性能。 取决于您使用的过滤器。例如,JHLABS 中的 GaussianFilter 应该使用 Separable Gaussian,因此在 Catalano 框架中的 GaussianBlur 非常快,因为在同一点使用两个方向。但是我用 Catalano Framework、AForge.NET 和 Accord.NET 测试了基准,Catalano Framework 的一些过滤器优于 AForge.NET,反之亦然。 1.2 版带来了并行处理的新功能。您只需将 Catalano.Imaging.Filters 更改为 Catalano.Imaging.Concurrent.Filters。敬请期待! 你的预计到达时间是多少? 所有测试都重复了 100 次。初始执​​行(在这 100 次之前)已被丢弃,以便在实际测量之前快速进行任何可能的编译器/JIT 优化。所有测试都是在 Visual Studio 之外进行的,即通过转到二进制文件夹并直接运行可执行文件。所有二进制文件都在发布模式下编译,适用于任何 CPU(意味着它们以 64 位模式运行)。中值滤波器。 AForge.NET:92650 - Catalano 框架:82336 - Catalano 框架(并发):20843 我打算这个月发布,xx/10/2013 (dd/mm/yyyy)。【参考方案3】:

你也可以试试this项目它处理多个Bitmap Processing

过滤器:-

增强颜色 亮度 颜色深度 彩色滤光片 对比度 浮雕 翻转和旋转 伽玛 高斯模糊 灰度 色相 反转 噪音 饱和度 棕褐色 锐化 素描 色调 小插曲

由于它是在 Java 中进行像素标签处理的,它不如大多数基于 C++ 的库那么快,但如果位图大小不是很大,例如缩略图,它就可以很好地工作。

【讨论】:

【参考方案4】:

这是一个优秀的库,易于与 gradle 集成,速度很快 高效,节省了我的时间:

https://github.com/wasabeef/picasso-transformations

这是一个如何使用的例子:

 Transformation trans1 = new ContrastFilterTransformation(getActivity(), 1.5f);
 Transformation trans2 = new BrightnessFilterTransformation(getActivity(), 0.2f);
 Picasso.with(getActivity()).load(uri)
        .transform(trans1).transform(trans2).into(imageview3);

【讨论】:

以上是关于如何在位图上应用不同的图像效果(滤镜),如棕褐色、黑白、模糊等? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

CSS滤镜filter

如何在位图上绘制粗体文本?

c ++在位图上绘制图像并保存

在 mousemove - 画布上应用灰度和棕褐色滤镜

在位图上绘制文本失败

在位图上绘制对角线文本