广

android开发

  • IOS开发
  • android开发
  • PHP编程
  • JavaScript
  • ASP.NET
  • ASP编程
  • JSP编程
  • Java编程
  • 易语言
  • Ruby编程
  • Perl编程
  • AJAX
  • 正则表达式
  • C语言
  • 编程开发

    Android编程之图片颜色处理方法

    2018-05-04 21:21:09 次阅读 稿源:互联网
    广告

    本文实例讲述了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程序设计有所帮助。

    一起学吧部分文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与一起学吧进行文章共享合作。

    广告
    广告
    广告