小白一枚,第一次写文章,主要是想记录一下,方便以后查看,写的不好,请多见谅…
一、添加依赖工程
GPUImage是一个基于OpenGL ES 2.0的开源的图像处理库。再Android Studio中使用前需在build.gradle(app)中添加依赖:
compile 'jp.co.cyberagent.android.gpuimage:gpuimage-library:1.4.1'
三、布局文件
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent" android:background="@drawable/cover2">
<Button
android:id="@+id/choose_filter"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="选择滤镜"
android:textSize="20sp"/>
<ImageView
android:id="@+id/image"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:adjustViewBounds="true"
android:layout_centerInParent="true"/>
</RelativeLayout>
这里再创建一个菜单:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/sepia_item"
android:title="伽马" />
<item
android:id="@+id/gray_item"
android:title="黑白" />
<item
android:id="@+id/color_invert_item"
android:title="反相" />
<item
android:id="@+id/sketch_item"
android:title="素描" />
<item
android:id="@+id/emboss_item"
android:title="浮雕" />
</menu>
二、封装GPUImageUtil
想要其他滤镜效果,可直接添加。
public class GPUImageUtil {
private static GPUImageFilter filter;
public enum FilterEnum{
Sepia, Gray, ColorInvert, Sketch, Emboss
}
public static GPUImageFilter createFilterForType(FilterEnum GPUFlag){
switch (GPUFlag){
case Sepia:
filter = new GPUImageSepiaFilter();//伽马
break;
case Gray:
filter = new GPUImageGrayscaleFilter();//灰
break;
case ColorInvert:
fi