本文实例讲述了Android编程之图片颜色处理方法。分享给大家供大家参考,具体如下:
你想做到跟美图秀秀一样可以处理自己的照片,美化自己的照片吗?其实你也可以自己做一个这样的软件,废话不多说了,直接上图,上代码了!
效果图如下:
没处理前:
处理之后:
MainActivity.java的代码如下:
package net.loonggg.test; import android.app.Activity; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.ColorMatrix; import android.graphics.ColorMatrixColorFilter; import android.graphics.Matrix; import android.graphics.Paint; import android.os.Bundle; import android.widget.ImageView; import android.widget.SeekBar; import android.widget.SeekBar.OnSeekBarChangeListener; public class MainActivity extends Activity { private SeekBar sb1, sb2, sb3, sb4, sb5; private ImageView iv; private Bitmap bitmap, updateBitmap; private Canvas canvas; private Paint paint; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); iv = (ImageView) findViewById(R.id.iv); sb1 = (SeekBar) findViewById(R.id.sb1); sb2 = (SeekBar) findViewById(R.id.sb2); sb3 = (SeekBar) findViewById(R.id.sb3); sb4 = (SeekBar) findViewById(R.id.sb4); sb5 = (SeekBar) findViewById(R.id.sb5); bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.b); updateBitmap = Bitmap.createBitmap(bitmap.getWidth(), bitmap.getHeight(), bitmap.getConfig()); canvas = new Canvas(updateBitmap); paint = new Paint(); final ColorMatrix cm = new ColorMatrix(); paint.setColorFilter(new ColorMatrixColorFilter(cm)); paint.setColor(Color.BLACK); paint.setAntiAlias(true); final Matrix matrix = new Matrix(); canvas.drawBitmap(bitmap, matrix, paint); iv.setImageBitmap(updateBitmap); /** * RGB三原色 红色值的设置 */ sb1.setOnSeekBarChangeListener(new OnSeekBarChangeListener() { @Override public void onStopTrackingTouch(SeekBar seekBar) { int progress = seekBar.getProgress(); cm.set(new float[] { progress / 128f, 0, 0, 0, 0,// 红色值 0, 1, 0, 0, 0,// 绿色值 0, 0, 1, 0, 0,// 蓝色值 0, 0, 0, 1, 0 // 透明度 }); paint.setColorFilter(new ColorMatrixColorFilter(cm)); canvas.drawBitmap(bitmap, matrix, paint); iv.setImageBitmap(updateBitmap); } @Override public void onStartTrackingTouch(SeekBar seekBar) { } @Override public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { } }); /** * RGB三原色 绿色值的设置 */ sb2.setOnSeekBarChangeListener(new OnSeekBarChangeListener() { @Override public void onStopTrackingTouch(SeekBar seekBar) { int progress = seekBar.getProgress(); cm.set(new float[] { 1, 0, 0, 0, 0,// 红色值 0, progress / 128f, 0, 0, 0,// 绿色值 0, 0, 1, 0, 0,// 蓝色值 0, 0, 0, 1, 0 // 透明度 }); paint.setColorFilter(new ColorMatrixColorFilter(cm)); canvas.drawBitmap(bitmap, matrix, paint); iv.setImageBitmap(updateBitmap); } @Override public void onStartTrackingTouch(SeekBar seekBar) { } @Override public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { } }); /** * RGB三原色 蓝色值的设置 */ sb3.setOnSeekBarChangeListener(new OnSeekBarChangeListener() { @Override public void onStopTrackingTouch(SeekBar seekBar) { int progress = seekBar.getProgress(); cm.set(new float[] { 1, 0, 0, 0, 0,// 红色值 0, 1, 0, 0, 0,// 绿色值 0, 0, progress / 128f, 0, 0,// 蓝色值 0, 0, 0, 1, 0 // 透明度 }); paint.setColorFilter(new ColorMatrixColorFilter(cm)); canvas.drawBitmap(bitmap, matrix, paint); iv.setImageBitmap(updateBitmap); } @Override public void onStartTrackingTouch(SeekBar seekBar) { } @Override public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { } }); /** * RGB三原色 三个值都改变为设置饱和度(亮度) */ sb4.setOnSeekBarChangeListener(new OnSeekBarChangeListener() { @Override public void onStopTrackingTouch(SeekBar seekBar) { int progress = seekBar.getProgress(); cm.set(new float[] { progress / 128f, 0, 0, 0, 0,// 红色值 0, progress / 128f, 0, 0, 0,// 绿色值 0, 0, progress / 128f, 0, 0,// 蓝色值 0, 0, 0, 1, 0 // 透明度 }); paint.setColorFilter(new ColorMatrixColorFilter(cm)); canvas.drawBitmap(bitmap, matrix, paint); iv.setImageBitmap(updateBitmap); } @Override public void onStartTrackingTouch(SeekBar seekBar) { } @Override public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { } }); /** * RGB三原色 设置透明度 */ sb5.setOnSeekBarChangeListener(new OnSeekBarChangeListener() { @Override public void onStopTrackingTouch(SeekBar seekBar) { int progress = seekBar.getProgress(); cm.set(new float[] { 1, 0, 0, 0, 0,// 红色值 0, 1, 0, 0, 0,// 绿色值 0, 0, 1, 0, 0,// 蓝色值 0, 0, 0, progress / 128f, 0 // 透明度 }); paint.setColorFilter(new ColorMatrixColorFilter(cm)); canvas.drawBitmap(bitmap, matrix, paint); iv.setImageBitmap(updateBitmap); } @Override public void onStartTrackingTouch(SeekBar seekBar) { } @Override public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { } }); } }
布局文件代码如下:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#CDCDCD" android:orientation="vertical" tools:context=".MainActivity" > <ImageView android:id="@+id/iv" android:layout_width="fill_parent" android:layout_height="wrap_content" /> <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:gravity="center_vertical" android:orientation="horizontal" android:padding="10dp" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="红色:" android:textColor="#FF0000" android:textSize="24sp" /> <SeekBar android:id="@+id/sb1" android:layout_width="fill_parent" android:layout_height="wrap_content" android:max="256" android:progress="128" /> </LinearLayout> <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:gravity="center_vertical" android:orientation="horizontal" android:padding="10dp" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="绿色:" android:textColor="#00FF00" android:textSize="24sp" /> <SeekBar android:id="@+id/sb2" android:layout_width="fill_parent" android:layout_height="wrap_content" android:max="256" android:progress="128" /> </LinearLayout> <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:gravity="center_vertical" android:orientation="horizontal" android:padding="10dp" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="蓝色:" android:textColor="#0000FF" android:textSize="24sp" /> <SeekBar android:id="@+id/sb3" android:layout_width="fill_parent" android:layout_height="wrap_content" android:max="256" android:progress="128" /> </LinearLayout> <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:gravity="center_vertical" android:orientation="horizontal" android:padding="10dp" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="饱和度:" android:textColor="#000000" android:textSize="16.5sp" /> <SeekBar android:id="@+id/sb4" android:layout_width="fill_parent" android:layout_height="wrap_content" android:max="256" android:progress="128" /> </LinearLayout> <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:gravity="center_vertical" android:orientation="horizontal" android:padding="10dp" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="透明度:" android:textColor="#000000" android:textSize="16.5sp" /> <SeekBar android:id="@+id/sb5" android:layout_width="fill_parent" android:layout_height="wrap_content" android:max="256" android:progress="128" /> </LinearLayout> </LinearLayout>
到这里就完了,看明白了吗?
希望本文所述对大家Android程序设计有所帮助。
主要内容:颜色命名,getrgb()方法,getcolor()Pillow 提供了颜色处理模块 ImageColor,该模块支持不同格式的颜色,比如 RGB 格式的颜色三元组、十六进制的颜色名称(#ff0000)以及颜色英文单词("red")。同时,它还可以将 CSS(层叠样式表,用来修饰网页)风格的颜色转换为 RGB 格式。 注意,在 ImageColor 模块对颜色的大小并不敏感,比如 "Red" 也可以写为 " red"。 颜色命名 ImageColo
本文向大家介绍Android编程之书架效果背景图处理方法,包括了Android编程之书架效果背景图处理方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Android编程之书架效果背景图处理方法。分享给大家供大家参考,具体如下: 在android应用中,做一个小说阅读器是很多人的想法,大家一般都是把如何读取大文件,如果在滚动或是翻页时,让用户感觉不到做为重点。我也在做一个类似一功能,可是
本文向大家介绍android图片处理之让图片变成圆形,包括了android图片处理之让图片变成圆形的使用技巧和注意事项,需要的朋友参考一下 这几天做项目,有些地方的图片需要用到圆形图片,所以百度了一下,在github上找到一个开源项目,处理很简单,效果如下: 使用起来特别简单,一共三步,具体如下: 1、创建一个Java类CircleImageView把下面的代码复制过去,报错的导包 2、在v
本文向大家介绍android中实现背景图片颜色渐变方法,包括了android中实现背景图片颜色渐变方法的使用技巧和注意事项,需要的朋友参考一下 常用,记录一下。 效果图: 首先新建xml文件 bg_gradient.xml 在布局文件里面引用
本文向大家介绍python数据处理 根据颜色对图片进行分类的方法,包括了python数据处理 根据颜色对图片进行分类的方法的使用技巧和注意事项,需要的朋友参考一下 前面一篇文章有说过,利用scrapy来爬取图片,是为了对图片数据进行分类而收集数据。 本篇文章就是利用上次爬取的图片数据,根据图片的颜色特征来做一个简单的分类处理。 实现步骤如下: 1:图片路径添加 2:对比度处理 3:滤波处理 4:数
我正在编辑以使问题更简单,希望这有助于获得准确的答案。 假设我有以下形状: 如何从一个活动类中以编程方式设置颜色?