Android图像处理之GPUImage for Android

GPUImage 是iOS下一个开源的基于GPU的图像处理库,提供各种各样的图像处理滤镜,并且支持照相机和摄像机的实时滤镜。GPUImage for Android是它在Android下的实现,同样也是开源的,托管在Github上。

版本:android-gpuimage-1.1.1

Android模拟器上不支持OpenGL ES 2.0所以会报错,可以选用Genymotion测试,或真机上运行。

引用

Caused by: java.lang.IllegalStateException: OpenGL ES 2.0 is not supported on this phone.

(1)使用自定义的ImageView

Xml代码

<jp.co.cyberagent.android.gpuimage.GPUImageView
    android:id="@+id/gpuimage"
    android:layout_width="wrap_content"
    android:layout_height="0dp"
    android:layout_gravity="center"
    android:layout_weight="1" />

Java代码

mImageView.setFilter(new GPUImageSepiaFilter()); // sepia
mImageView.setFilter(new GPUImageGrayscaleFilter()); // gray
mImageView.setFilter(new GPUImageSharpenFilter()); // sharp
mImageView.setFilter(new GPUImageSobelEdgeDetection()); // edge

原图

sepia后:

gray后:

sharp后:

edge后:

(2) 处理Assets中的文件

Java代码

// 读取图像
AssetManager as = getAssets();
InputStream is = null;
Bitmap bitmap = null;
try {
    is = as.open("dog.jpg");
    bitmap = BitmapFactory.decodeStream(is);
    is.close();
} catch (IOException e) {
    Log.e("MainActivity", "Error");
}
 
// 使用GPUImage处理图像
GPUImage gpuImage = new GPUImage(this);
gpuImage.setImage(bitmap);
gpuImage.setFilter(new GPUImageToonFilter());
bitmap = gpuImage.getBitmapWithFilterApplied();
 
// 在ImageView中显示处理后的图像
ImageView view = new ImageView(this);
view.setImageBitmap(bitmap);
setContentView(view);

(3)使用Photoshop的acv文件

Java代码

// 读取图像
AssetManager as = getAssets();
InputStream is = null;
Bitmap bitmap = null;
try {
    is = as.open("dog.jpg");
    bitmap = BitmapFactory.decodeStream(is);
    is.close();
} catch (IOException e) {
    Log.e("MainActivity", "Error");
}

// 读取Photoshop的acv文件
GPUImageToneCurveFilter filter = new GPUImageToneCurveFilter();
try {
    is = as.open("tone_curve.acv");
    filter.setFromCurveFileInputStream(is);
    is.close();
} catch (IOException e) {
    Log.e("MainActivity", "Error");
}

// 使用GPUImage处理图像
GPUImage gpuImage = new GPUImage(self);
gpuImage.setImage(bitmap);
gpuImage.setFilter(filter);
bitmap = gpuImage.getBitmapWithFilterApplied();

// 在ImageView中显示处理后的图像
ImageView view = new ImageView(self);
view.setImageBitmap(bitmap);
setContentView(view);
时间: 2024-12-07 18:18:22

Android图像处理之GPUImage for Android的相关文章

Android图像处理技术(实现Android中的PS)(六)

好吧,关于Android中图像处理的最后一个微博,保证是最后一个了,希望泥萌不要骂我... 今天想实现的效果是:终极大招:利用BitmapMesh来实现一些特效. 当然,BitmapMesh功能十分强大,打开大家的脑洞,相信大家会设计出更炫丽的特效: 和往常一样,首先,上效果图,卖个萌: 怎么样,普通的一张图按正弦曲线跳起舞来了... 然后,开始吧: 首先,自定义View:BitmapMeshView: public class BitmapMeshView extends View { //后

[Android] 图像处理软件整合之处理ColorMatrix和Intend传递路径显示图像

    经过几门考试之后,终于有时间整合下自己的Anroid项目"随手拍"的图像处理部分了,主要是结合前面几篇文章讲解的各种android图像处理技术和PopupWindow布局,图像初步整合效果如下.由于该软件目前还未答辩,所以结束后会共享所有的源代码,可能需要一个月后吧,抱歉~               在"随手拍"中点击发布,有添加图片按钮,点击出现"选择本地图片"和"照相截拆选择",显示图片至另一个处理界面,底部五个

Android图像处理之图形特效处理

一.Android变形矩阵--Matricx: 跟Android图像的色彩处理基本一样,只是将ColorMatrix换成了Matrix,ColorMatrix是4*5的矩阵,Matrix是3*3的.每个像素点表达了其坐标的X.Y信息: 当使用变换矩阵去处理每一个像素点的时候,与颜色矩阵的矩阵乘法一样,计算公式如下所示: 通常情况下,会让g=h=0,i=1,这样就使1=gX+hY+i    恒成立.因此,只需着重关注上面几个参数即可. 与色彩变换矩阵的初始矩阵一样,图形变换矩阵也有一个初始矩阵.就

Android 图像处理软件

在机器视觉实验室呆了有一年半时间了,但由于自己"任性".一直以来学习的内容都是自己来安排,我还是坚持认为没有最好和最简单的技术,只有自己喜欢的技术.不过说起来还是会觉得惭愧,经常听到师兄们谈论图像处理各种算法,可是一直到此软件诞生之前对机器视觉的知识可以说一概不知.自己研究的主要是Android系统的东西,从上层到下层都有所涉及.一直以来都想把自身所长和实验室主题联系上,这样可以多和实验室牛人沟通,也顺便刷刷存在感~由此向师兄师弟们请教一二,学了一点图像处理技术,做了一款Android

android 图像处理(黑白,模糊,浮雕,圆角,镜像,底片,油画,灰白,加旧,哈哈镜,放大镜)

转载文章请注明出处:http://blog.csdn.net/dangxw_/article/details/25063673 前些天在github上得到一个关于图像处理的源码(地址找不到了),挺全面,闲了分享一下.感谢开源. 对于图片的反转,倾斜,缩放之类的操作就不提了,网上太多了.大多都是用的Matrix现成方法. 原图: 一:圆角处理 效果: 代码: public static Bitmap getRoundedCornerBitmap(Bitmap bitmap, float round

android 图像处理系列合集

为了便于大家对滤镜算法的学习,以后发布的图像处理滤镜系列帖子会在这里汇总,本人第一次写合集,写得不好的地方大家请见谅,手头上虽然有一些滤镜的算法,但是大多不是android版的,教程里的代码大多是我借鉴其他语言的算法转换而成的,效率上还存在优化的空间,大家可以自行优化.有些网友说代码能看懂,但是里面的某些数值不知道是怎么计算出来的,说实话有些数值我不查资料我也不是很清楚,但是当我需要知道的时候我也会慢慢查阅算法的核心思想,很多参数由此而来.同时也希望大家养成不懂就查的习惯. android 图像

android图像处理系列之七--图片涂鸦,水印-图片叠加

图片涂鸦和水印其实是一个功能,实现的方式是一样的,就是一张大图片和一张小点图片叠加即可.前面在android图像处理系列之六--给图片添加边框(下)-图片叠加中也讲到了图片叠加,里面实现的原理是直接操作像素点.下面给出别外一种方式让图片叠加--用Canvas处理图片,canvas已经封装好了,直接调用就行. 下面看效果: += 代码: [java] view plain copy /** * 组合涂鸦图片和源图片 * @param src 源图片 * @param watermark 涂鸦图片

Android图像处理

在imooc上看了eclipse_xu的课程<Android图像处理>,照葫芦画瓢写了一个Demo: 看一下效果图: 核心代码: package com.zms.imageprocess; import android.app.Activity; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.os.Bundle; import android.view.View; im

android图像处理系列之三--图片色调饱和度、色相、亮度处理

原图: 处理后: 下面贴代码: 一.图片处理层: [java] view plaincopy package com.jacp.tone.view; import java.util.ArrayList; import android.content.Context; import android.graphics.Bitmap; import android.graphics.Canvas; import android.graphics.ColorMatrix; import android