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()); // sepiamImageView.setFilter(new GPUImageGrayscaleFilter()); // graymImageView.setFilter(new GPUImageSharpenFilter()); // sharpmImageView.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);

更多相关文章

  1. Android事件分发机制完全解析(终极版)
  2. 【Android休眠】之Android对PowerKey事件的处理(2)EventHub
  3. Android(安卓)LayoutInflater的获取及inflate()参数和返回值
  4. 对android中事件的分发的理解
  5. Android处理ListView的条目长按事件
  6. Android的Matrix图像变化原理
  7. FrameLayout 帧布局
  8. Mac修改环境变量路径中带空格的处理
  9. [原]Android应用程序键盘(Keyboard)消息处理机制分析

随机推荐

  1. ADT在线安装(http://dl-ssl.google.com/an
  2. Linux中source命令,在Android build 中的
  3. Android WIFI状态监控
  4. Android横竖屏切换Activity生命周期
  5. Android分辨率转像素
  6. android 中如何获取mapkey
  7. android binder机制实现
  8. Android(安卓)常见分辨率 —— mdpi、hdp
  9. Android 防止设备休眠
  10. Android 判断手势的滑动方向