日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

android bitmap 饱和度 demo,Android GPUImage实现多种图像滤镜效果

發布時間:2025/3/15 Android 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android bitmap 饱和度 demo,Android GPUImage实现多种图像滤镜效果 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言

GPUImage 是iOS下一個開源的基于GPU的圖像處理庫,提供各種各樣的圖像處理濾鏡,并且支持照相機和攝像機的實時濾鏡。GPUImage for Android是它在Android下的實現,同樣也是開源的。其中提供了幾十多種常見的圖片濾鏡API,且其機制是基于GPU渲染,處理速度相應也比較快,是一個不錯的圖片實時處理框架。

基本使用

GPUImage加載圖片有兩種方式,一種是通過GPUImage類獲取結果數據然后用ImageView加載,另一種是使用它的GPUImageView控件來進行展示。

GPUImage濾鏡素材

1.通過GPUImage類獲取結果數據然后用GLSurfaceView加載

xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent"

android:layout_height="match_parent">

android:id="@+id/surfaceView"

android:layout_width="match_parent"

android:layout_height="match_parent" />

public class GPUImageActivity extends AppCompatActivity {

@Override

protected void onCreate(@Nullable Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_gpu_image);

Uri imageUri = Uri.parse("https://upload-images.jianshu.io/upload_images/16311248-4ee6c079e02773d1.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240");

GPUImage gpuImage = new GPUImage(this);

gpuImage.setGLSurfaceView((GLSurfaceView) findViewById(R.id.surfaceView));

gpuImage.setImage(imageUri); // this loads image on the current thread, should be run in a thread

gpuImage.setFilter(new GPUImageSketchFilter());

}

}

當然,你可能由于項目原因,需要使用ImageView來加載,GPUImage還提供了getBitmapWithFilterApplied接口,可以獲取到設置完濾鏡之后的Bitmap,你再調用ImageView的setImageBitmap也是可以的:

Uri imageUri = Uri.parse("https://upload-images.jianshu.io/upload_images/16311248-4ee6c079e02773d1.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240");

GPUImage gpuImage = new GPUImage(this);

gpuImage.setGLSurfaceView((GLSurfaceView) findViewById(R.id.surfaceView));

gpuImage.setImage(imageUri);

gpuImage.setFilter(new GPUImageSketchFilter());

imageView.setImageBitmap(gpuImage.getBitmapWithFilterApplied());

2.通過GPUImageView控件來進行展示

xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent"

android:layout_height="match_parent">

android:id="@+id/gpu_image_view"

android:layout_width="match_parent"

android:layout_height="match_parent">

public class GPUImageActivity extends AppCompatActivity {

@Override

protected void onCreate(@Nullable Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_gpu_image);

Uri imageUri = Uri.parse("https://upload-images.jianshu.io/upload_images/16311248-4ee6c079e02773d1.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240");

GPUImageView gpuImageView = findViewById(R.id.gpu_image_view);

gpuImageView.setImage(imageUri);

gpuImageView.setFilter(new GPUImageSketchFilter());

}

}

這里添加了一個簡單的素描效果,我們看下加了濾鏡之后的效果圖:

素描效果

效果還不錯,如果我們想要換一種濾鏡,只要通過setFilter替換具體的濾鏡類就可以了,比如說我們調用gpuImageView.setFilter(new GPUImageGrayscaleFilter());換成黑白效果:

黑白濾鏡效果圖

具體的濾鏡類都在jp.co.cyberagent.android.gpuimage.filter這個package下,感興趣的朋友可以自行查閱。

調整亮度飽和度

剛才舉了兩個簡單的濾鏡效果,GPUImage還有一些濾鏡是有帶參構造方法的,用來方便我們調整效果的百分比,比如說調整飽和度和亮度。

飽和度

GPUImage調整飽和度是通過GPUImageSaturationFilter(float saturation),saturation代表當前所要設置的飽和度,范圍是0~1:

public class GPUImageActivity extends AppCompatActivity implements SeekBar.OnSeekBarChangeListener{

GPUImageView mGpuImageView;

AppCompatSeekBar mSeekBar;

TextView mProgressTv;

@Override

protected void onCreate(@Nullable Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_gpu_image);

mProgressTv = findViewById(R.id.progress_tv);

mSeekBar = findViewById(R.id.seek_bar);

mSeekBar.setMax(100);

mSeekBar.setOnSeekBarChangeListener(this);

Uri imageUri = Uri.parse("https://upload-images.jianshu.io/upload_images/16311248-4ee6c079e02773d1.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240");

mGpuImageView = findViewById(R.id.gpu_image_view);

mGpuImageView.setImage(imageUri);

}

@Override

public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {

float value = (float)progress / 100f;

mProgressTv.setText("當前飽和度: " + value);

mGpuImageView.setFilter(new GPUImageSaturationFilter(value));

}

@Override

public void onStartTrackingTouch(SeekBar seekBar) {

}

@Override

public void onStopTrackingTouch(SeekBar seekBar) {

}

}

代碼很簡單,就是根據seekBar的值去更新濾鏡的參數,呈現出來的效果:

飽和度調整.gif

亮度

亮度與飽和度用法相似,只需將setFilter替換為GPUImageBrightnessFilter(float brightness),代碼就不貼出來了,直接看效果:

亮度調整.gif

支持的圖片類型

可以看到剛才我們的demo是加載了一張網絡圖,GPUImage還支持其他的加載類型,除了網絡資源,還可以加載本地圖片也可以加載項目里的資源,比如Bitmap、File、Asset等等,在GPUImage類中可以看到這些接口:

/**

* Sets the image on which the filter should be applied.

*

* @param bitmap the new image

*/

public void setImage(final Bitmap bitmap) {

gpuImage.setImage(bitmap);

}

/**

* Sets the image on which the filter should be applied from a Uri.

*

* @param uri the uri of the new image

*/

public void setImage(final Uri uri) {

gpuImage.setImage(uri);

}

/**

* Sets the image on which the filter should be applied from a File.

*

* @param file the file of the new image

*/

public void setImage(final File file) {

gpuImage.setImage(file);

}

結語

GPUImage 的一些效果基本能滿足要求,其他的濾鏡效果,小伙伴們可以試試效果如何。其內部也是通過OpenGL實現的,待有空研究一下。

關于作者

GitHub:GitHub-ZJYWidget

CSDN博客:IT_ZJYANG

簡 書:Android小Y

在Github上建了一個集合炫酷自定義View的項目,里面有很多實用的自定義View源碼及demo,會長期維護,歡迎Star~ 如有不足之處或建議還望指正,相互學習,相互進步,如果覺得不錯動動小手給個喜歡, 謝謝~

與50位技術專家面對面20年技術見證,附贈技術全景圖

總結

以上是生活随笔為你收集整理的android bitmap 饱和度 demo,Android GPUImage实现多种图像滤镜效果的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 欧美日韩激情在线一区二区三区 | 日日干av | 五十路熟母 | 69堂精品| av网址观看 | 青青草成人免费在线视频 | 99综合色 | 国产青青草视频 | 理论片中文 | 校园春色av | 国产白嫩美女无套久久 | 色综合久久久久久久 | 国色天香av| 久久久精品久久久 | 无码不卡av东京热毛片 | 国产一道本 | 久久久久女人精品毛片九一 | 国产一级二级在线 | 在线观看福利视频 | 91精品国产一区二区三竹菊影视 | 色综合狠狠 | 色欲国产精品一区二区 | 欧美精品一级二级三级 | 樱花影院最新免费观看攻略 | 欧美粗又大 | 国内自拍视频网站 | 国内91视频 | 亚洲综合色站 | 99re在线观看视频 | 亚洲熟妇丰满大屁股熟妇 | 亚洲91色 | 久久久人体 | 色播五月激情五月 | 特级西西444www大精品视频免费看 | 欧美性色黄大片手机版 | 亚洲第一天堂网 | 粗大的内捧猛烈进出视频 | 天天干天天操天天爽 | 高潮毛片 | 神马午夜电影一区二区三区在线观看 | 少妇做爰免费理伦电影 | 污网站在线免费 | 亚洲天堂中文在线 | 亚洲天堂999| 日韩精品理论 | 青娱乐在线免费视频 | 毛片在线看网站 | av中文字幕一区二区 | 久久中文一区 | 日本不卡一区在线观看 | 91精品久久久久久久久中文字幕 | 欧美午夜精品一区二区三区电影 | jizz处女| 麻豆成人免费视频 | 婷婷网五月天 | 色欧美综合 | 伊人网成人 | 欧美日本综合 | 欧美亚洲一区二区三区四区 | 蜜桃久久av一区 | 黄色网炮| 少妇高潮一区二区三区69 | 国产精品久久久久永久免费看 | 91在线观看欧美日韩 | 五月天啪啪 | 国产淫视 | 免费黄色av网址 | 亚洲区视频在线观看 | 在线观看视频99 | 午夜小影院 | xxx性欧美| 久久久久99精品成人片我成大片 | 国产乱淫精品一区二区三区毛片 | 91精品国产乱码久久久久 | 精品久久久久久久久久岛国gif | 国产精品人人做人人爽人人添 | 欧美激情精品 | 李宗瑞91在线正在播放 | 黄色大片黄色大片 | 久久精品无码专区免费 | 91国产视频在线观看 | 激情文学综合网 | 欧美| 涩涩涩涩av | 国产一区二区波多野结衣 | 手机av不卡| 99热国产精品| 日本护士取精xxxxxhd | 国产原创精品 | 18黄暴禁片在线观看 | 91香蕉视频官网 | 日韩欧美手机在线 | 台湾黄色网址 | 神马久久网站 | 在线无遮挡 | 亚洲淫欲 | 欧美日韩午夜精品 | 在线小视频你懂的 | 黄色小视频免费在线观看 |