Android编程实现图片的颜色处理功能示例
作者:飘走的我 发布时间:2022-10-08 23:15:25
标签:Android,图片,颜色处理
本文实例讲述了Android编程实现图片的颜色处理功能。分享给大家供大家参考,具体如下:
先看效果图:
图片的颜色处理的基本步骤:
1.先拿到一张原图
2.拿到一张和原图一样的纸
3.把纸固定在画板上
4.颜色的取值
5.进度条的拖动与监听
代码编写:
布局:
<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:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="青--红" />
<SeekBar
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/red_seekbar"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="青--绿" />
<SeekBar
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/green_seekbar"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="青--蓝" />
<SeekBar
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/blue_seekbar"/>
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/im"
android:src="@drawable/img_small_1"/>
</LinearLayout>
activity:
public class MainActivity extends Activity implements OnSeekBarChangeListener{
private SeekBar red_sb,green_sb,blue_sb;
private ImageView imageView;
private Canvas canvas;
private Paint paint;
private Bitmap baseBitmap,copyBitmap;
private float red_vector,green_vector,blue_vector;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
red_sb=(SeekBar) findViewById(R.id.red_seekbar);
green_sb=(SeekBar) findViewById(R.id.green_seekbar);
blue_sb=(SeekBar) findViewById(R.id.blue_seekbar);
imageView=(ImageView) findViewById(R.id.im);
red_sb.setOnSeekBarChangeListener(this);
green_sb.setOnSeekBarChangeListener(this);
blue_sb.setOnSeekBarChangeListener(this);
}
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
// TODO Auto-generated method stub
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
// TODO Auto-generated method stub
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
// TODO Auto-generated method stub
int progress=seekBar.getProgress();
float count=progress/50f;//使拖动条的取值为0f-2f,满足我们的取值要求
switch (seekBar.getId()) {
case R.id.red_seekbar:
this.red_vector=count;
break;
case R.id.green_seekbar:
this.green_vector=count;
break;
case R.id.blue_seekbar:
this.blue_vector=count;
break;
default:
break;
}
//主题代码
baseBitmap=BitmapFactory.decodeResource(getResources(), R.drawable.img_small_1);
copyBitmap=Bitmap.createBitmap(baseBitmap.getWidth(), baseBitmap.getHeight(), baseBitmap.getConfig());
canvas=new Canvas(copyBitmap);
Matrix matrix=new Matrix();
paint=new Paint();
//vector:取值范围(0-2)
float[] colors=new float[]{
red_vector,0,0,0,0,
0,green_vector,0,0,0,
0,0,blue_vector,0,0,
0,0,0,1,0};
paint.setColorFilter(new ColorMatrixColorFilter(colors));
canvas.drawBitmap(baseBitmap, matrix, paint);
imageView.setImageBitmap(copyBitmap);
}
}
希望本文所述对大家Android程序设计有所帮助。
来源:http://blog.csdn.net/qq_33642117/article/details/51833175
0
投稿
猜你喜欢
- 一、BigInteger介绍如果在操作的时候一个整型数据已经超过了整数的最大类型长度 long 的话,则此数据就无法装入,所以,此时要使用
- 在Android中,线程内部或者线程之间进行信息交互时经常会使用消息,这些基础的东西如果我们熟悉其内部的原理,将会使我们容易、更好地架构系统
- 如今代码圈很多做网络爬虫的例子,今天小编给大家分享的是如何用C#做网络爬虫。注意这次的分享只是分享思路,并不是一整个例子,因为如果要讲解一整
- RocketMQ存储路径默认是${ROCKRTMQ_HOME}/store,主要存储消息、主题对应的消息队列的索引等。1、概述查看其目录文件
- 1. InputStream -> byte[]引入 apache.commons.is 包import org.apache.com
- 本文实例讲述了Android编程使用android-support-design实现MD风格对话框功能。分享给大家供大家参考,具体如下:首先
- 二分查找又称折半查找,它是一种效率较高的查找方法。折半查找的算法思想是将数列按有序化(递增或递减)排列,查找过程中采用跳跃式方式查找,即先以
- 1 概述Java虚拟机把描述类的数据从Class文件加载到内存, 并对数据进行校验、转化解析和初始化,最终形成可以被虚拟机直接使用的Java
- 同步日志的业务流程处理和日志打印是在同一个线程,日志打印的过程实际上是写文件IO的过程,这个过程是相对耗时的,并且会阻塞主线程的执行,只有日
- 一. 线性表中的顺序表线性表(linear list)是n个具有相同特性的数据元素的有限序列。 线性表是一种在实际中广泛使用的数据结构,常见
- 摘要:本文介绍Linq查询基本操作(查询关键字)- from 子句- where 子句- select子句- group 子句- into
- 记录自己用java swing做的第一个简易界面。LoginAction.javapackage com.QQUI0819;import j
- 在利用C#开发Winform应用程序的时候,我们有可能使用RichTextBox来实现实时显示应用程序日志的功能,日志又分为:一般消息,警告
- 下截JNative组件jnative.sourceforge.net/ 到这里下载JNative开源项目,我下载的是1.3.2解压JNati
- 自然排序TreeSet集合在存储数据时有一定的顺序,它会将一些数据进行比较,比较调用的是comparaTo()方法,该方法是在Compara
- SpringMVC在接收集合请求参数时,需要在Controller方法的集合参数里前添加@RequestBody,而@RequestBody
- 源程序揭秘杨辉三角形性质: 每行数字左右对称,由 1 开始逐渐变大,然后变小,回到 1。 第 n 行的数字个数为 n 个。 第 n 行数字和
- 本文实例为大家分享了C#实现简单打字小游戏的具体代码,供大家参考,具体内容如下using System;using System.Colle
- 代码如下:using System; using System.Collections.Generic; using S
- Java多线程线程的创建1.继承Thread2.实现Runnable3.实现Callable使用继承Thread类来开发多线程的应用程序在设