【问题标题】: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 中,

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

谢谢,

【问题讨论】:

    标签: android image-processing android-image image-editing


    【解决方案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 先生,我会试试,如果有任何问题,我会问
    【解决方案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);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-06-05
        • 1970-01-01
        • 2011-09-29
        • 1970-01-01
        • 2020-04-05
        相关资源
        最近更新 更多