码迷,mamicode.com
首页 > 移动开发 > 详细

Android图像处理之GPUImage for Android

时间:2014-12-25 22:12:14      阅读:354      评论:0      收藏:0      [点我收藏+]

标签:

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);




Android图像处理之GPUImage for Android

标签:

原文地址:http://blog.csdn.net/u014316982/article/details/42152957

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!