Android图像处理之GPUImage for Android

[url=https://github.com/BradLarson/GPUImage]GPUImage[/url] 是iOS下一个开源的基于GPU的图像处理库,提供各种各样的图像处理滤镜,并且支持照相机和摄像机的实时滤镜。[url=https://github.com/CyberAgent/android-gpuimage]GPUImage for Android[/url]是它在Android下的实现,同样也是开源的,托管在Github上。

版本:android-gpuimage-1.1.1

Android模拟器上不支持OpenGL ES 2.0所以会报错,可以选用[url=http://www.genymotion.com/]Genymotion[/url]测试,或真机上运行。
[quote]Caused by: java.lang.IllegalStateException: OpenGL ES 2.0 is not supported on this phone.[/quote]

[b](1)使用自定义的ImageView[/b]

<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


原图:
[img]http://dl2.iteye.com/upload/attachment/0093/2021/32e1bf04-8735-3c17-abac-c8bc267fede4.png[/img]

sepia后:
[img]http://dl2.iteye.com/upload/attachment/0093/2023/f7cd1809-f717-302a-bc60-0135264492aa.png[/img]

gray后:
[img]http://dl2.iteye.com/upload/attachment/0093/2025/c6ade696-bfbb-3432-8fc9-375df8cfbfeb.png[/img]

sharp后:
[img]http://dl2.iteye.com/upload/attachment/0093/2027/0445a204-f6b1-37ae-b73c-40ea4376b54a.png[/img]

edge后:
[img]http://dl2.iteye.com/upload/attachment/0093/2029/a619dd0c-98fe-3295-80bb-ccc64dfe352e.png[/img]

[b](2) 处理Assets中的文件[/b]

// 读取图像
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);


[b](3)使用Photoshop的acv文件[/b]

// 读取图像
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);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值