`
rensanning
  • 浏览: 3516760 次
  • 性别: Icon_minigender_1
  • 来自: 大连
博客专栏
Efef1dba-f7dd-3931-8a61-8e1c76c3e39f
使用Titanium Mo...
浏览量:37539
Bbab2146-6e1d-3c50-acd6-c8bae29e307d
Cordova 3.x入门...
浏览量:604526
C08766e7-8a33-3f9b-9155-654af05c3484
常用Java开源Libra...
浏览量:678383
77063fb3-0ee7-3bfa-9c72-2a0234ebf83e
搭建 CentOS 6 服...
浏览量:87439
E40e5e76-1f3b-398e-b6a6-dc9cfbb38156
Spring Boot 入...
浏览量:399955
Abe39461-b089-344f-99fa-cdfbddea0e18
基于Spring Secu...
浏览量:69113
66a41a70-fdf0-3dc9-aa31-19b7e8b24672
MQTT入门
浏览量:90594
社区版块
存档分类
最新评论

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

<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" />


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中的文件

// 读取图像
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文件

// 读取图像
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);
  • 大小: 336.9 KB
  • 大小: 255.2 KB
  • 大小: 208.9 KB
  • 大小: 357.5 KB
  • 大小: 218.8 KB
分享到:
评论
6 楼 Yimi-依米 2018-03-31  
你好,我下载了你的例子安装在我7.1.2的手机上,但发现会有个弹出框报错Detected problems with app native libraries(Please consult log for detail);libgpuimage-library.so:text relocation,网上说因为所生成的so文件的版本小于23,所以在6.0以上版本的手机上会报这个错,请问有什么解决方法吗?
5 楼 MySpringDay 2015-10-13  
                 
4 楼 xdm199 2015-05-08  
楼主,请问下这么保存图片啊。
3 楼 Mybeautiful 2015-01-11  
博主有没有更新,处理过的图片不能保存,也很纠结啊....
2 楼 Mybeautiful 2014-12-19  
补充一下,我下载了最新的源码使用,发现可以过去,但是非常卡;确实是跟图片大小有关;图片越大,运算量就大,导致超级慢,估计5秒吧。
1 楼 Mybeautiful 2014-12-19  
试验了下,发现

// 使用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);  


其中这句卡住,不能继续
bitmap = gpuImage.getBitmapWithFilterApplied();

不知道是不是因为图片大小的原因;

相关推荐

    GPUImage for Android.zip

    GPUImage for Android介绍: 实现各种各样图像滤镜(图像处理)效果,多达50多种效果,基本囊括了最常见的图像处理效果。包括:contrast,hue,gamma,brightness,sharpness,emboss,saturation,exposure,...

    Android GPUImage图像滤镜(图像处理)效果.zip

    Android GPUImage图像滤镜(图像处理)效果源码

    GPUImage for Android

    GPUImage for Android介绍: 实现各种各样图像滤镜(图像处理)效果,多达50多种效果,基本囊括了最常见的图像处理效果。包括:contrast,hue,gamma,brightness,sharpness,emboss,saturation,exposure,...

    GPUImage for Android(安卓源代码)

     实现各种各样图像滤镜(图像处理)效果,多达50多种效果,基本囊括了最常见的图像处理效果。包括:contrast,hue,gamma,brightness,sharpness,emboss,saturation,exposure,shadow,blend等等。 由于需要...

    Android代码-图片滤镜处理,相机滤镜处理,拍照,录制视频

    一。项目功能 1.对图片进行滤镜处理 2.相机预览滤镜处理, 并实现可拍照和录制视频的功能 二。效果演示 图片滤镜 相机滤镜 ...此项目基于wysaid的android-gpuimage-plus封装实现,感谢wysaid。

    GPUImage:适用于 Android 的 GPUImage

    图形处理器 这是一个项目实时图像或视频处理库(想法来自一个流行的 iOS 库 GPUImage: : )

    Android例子源码支持实时摄像头滤镜的GPUImage

    GPUImage 是iOS下一个开源的基于GPU的图像处理库,提供各种各样的图像处理滤镜,并且支持照相机和摄像机的实时滤镜。

    GPUImage实时滤镜

    GPU:(Graphic Processor Unit图形处理单元)手机或者电脑用于图像处理和渲染的硬件 GPU工作原理:CPU指定显示控制器工作,显示控制器根据CPU的控制到指定的地方去取数据和指令, 目前的数据一般是从显存里取,...

    支持实时摄像头滤镜的GPUImage.zip

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

    使用图层可绘制和效果工厂android的Android图像过滤器处理。-Android开发

    ImageEffectFilter使用图层可绘制和效果工厂android处理Android图像过滤器。 如果要从Android的效果工厂中选择效果,请选择效果工厂(使用最低API 14)。 w w ImageEffectFilter使用图层可绘制和效果工厂android处理...

    gpuimage-library-1.4.0.jar

    GPUImage是一个基于OpenGL ES 2.0的开源的图像处理库,作者是Brad Larson。GPUImage将OpenGL ES封装为简洁的Objective-C或Swift接口,可以用来给图像、实时相机视频、电影等添加滤镜。

    Android实时效果过滤器rtmp流媒体库。使用Mediacodec HWencoding&librtmp流媒体

    软模式滤波器可以通过处理从相机捕获的 NV21 图像阵列来实现 硬模式过滤器可以通过渲染从相机捕获的图像纹理来实现 兼容GPUImage,使用GPUImageFilter不改一行 支持像素旋转和翻转 支持分辨率、比特率、fps等编码...

    android-openGL-canvas:一个Android库,提供使用openGL画布在SurfaceView或TextureView上绘制内容的视图

    提供类似GPUImage里的Filter的API,可以在使用画布GL画东西时实现图像处理。提供的View是继承GLSurfaceView或TextureView的,可以使用这两种View的特性,特别是TextureView的特性。另外,因为使用OpenGL在另一线程...

    支持实时摄像头滤镜的GPUImage

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

    librestreaming:Android实时效果滤镜rtmp流库。使用Mediacodec HWencoding&librtmp流

    可以通过处理从相机捕获的NV21图像阵列来实现软模式滤波器 硬模式滤镜可以通过渲染从相机捕获的图像纹理来实现 与GPUImage兼容,使用GPUImageFilter无需更改一行 支持像素旋转和翻转 支持编码参数,例如分辨率,...

    GPUImage.rar_Java编程_Java__Java编程_Java_

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

    Android通用流行框架大全【整理】

    Android通用流行框架大全 1. 缓存 ...Picasso-transformations一个为Picasso提供多种图片变换的库Glide-transformations一个为Glide提供多种图片变换的库Android-gpuimage基于OpenGL的Android过

    实现多种样式图像Image滤镜效果

    这是实现多种样式图像Image滤镜效果,实现各种各样图像滤镜(图像处理)效果,多达50多种效果,基本囊括了最常见的图像处理效果。包括:contrast,hue,gamma,brightness,sharpness,emboss,saturation,exposure...

    在iOS中给视频添加滤镜的方法示例

    在 iOS 中,对视频进行图像处理一般有两种方式: GPUImage 和 AVFoundation 。 一、GPUImage 在之前的文章中,我们对 GPUImage 已经有了一定的了解。之前一般使用它对摄像头采集的图像数据进行处理,然而,它对本地...

Global site tag (gtag.js) - Google Analytics