本文实例讲述了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,1,// 绿色值 0,// 蓝色值 0,0 // 透明度 }); paint.setcolorFilter(new colorMatrixcolorFilter(cm)); canvas.drawBitmap(bitmap,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,progress / 128f,boolean fromUser) { } }); /** * RGB三原色 蓝色值的设置 */ sb3.setonSeekbarchangelistener(new OnSeekbarchangelistener() { @OverrIDe public voID onStopTrackingtouch(Seekbar seekbar) { int progress = seekbar.getProgress(); cm.set(new float[] { 1,boolean fromUser) { } }); /** * RGB三原色 三个值都改变为设置饱和度(亮度) */ sb4.setonSeekbarchangelistener(new OnSeekbarchangelistener() { @OverrIDe public voID onStopTrackingtouch(Seekbar seekbar) { int progress = seekbar.getProgress(); cm.set(new float[] { progress / 128f,boolean fromUser) { } }); /** * RGB三原色 设置透明度 */ sb5.setonSeekbarchangelistener(new OnSeekbarchangelistener() { @OverrIDe public voID onStopTrackingtouch(Seekbar seekbar) { int progress = seekbar.getProgress(); cm.set(new float[] { 1,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程序设计有所帮助。
总结以上是内存溢出为你收集整理的Android编程之图片颜色处理方法全部内容,希望文章能够帮你解决Android编程之图片颜色处理方法所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)