zoukankan      html  css  js  c++  java
  • Bitmap3

    图片的缩放

    public class MainActivity extends Activity {

     private ImageView iv1;

     private ImageView iv2;

     private ImageView iv3;

     @Override

     protected void onCreate(Bundle savedInstanceState) {

      super.onCreate(savedInstanceState);

      setContentView(R.layout.activity_main);

      this.iv1 = (ImageView) this.findViewById(R.id.iv1);

      this.iv2 = (ImageView) this.findViewById(R.id.iv2);

      this.iv3 = (ImageView) this.findViewById(R.id.iv3);

      Bitmap bitmap1 = BitmapFactory.decodeResource(getResources(),

        R.drawable.ic_launcher);

      this.iv1.setImageBitmap(bitmap1);

      Bitmap bitmap2 = Bitmap.createBitmap(bitmap1.getWidth(),

        bitmap1.getHeight(), bitmap1.getConfig());

      Canvas canvas = new Canvas(bitmap2);

      Matrix matrix = new Matrix();

      matrix.setValues(new float[] {

        0.5f, 0, 0,

        0, 0.5f, 0,

        0, 0, 1

      });

      canvas.drawBitmap(bitmap1, matrix, new Paint());

      iv2.setImageBitmap(bitmap2);

      Bitmap bitmap3 = Bitmap.createBitmap(bitmap1.getWidth() * 2,

        bitmap1.getHeight() * 2, bitmap1.getConfig());

      canvas = new Canvas(bitmap3);

      matrix.setScale(2, 2);

      canvas.drawBitmap(bitmap1, matrix, new Paint());

      iv3.setImageBitmap(bitmap3);

     }

    }

    图片的旋转

    public class MainActivity extends Activity {

     private ImageView iv1;

     private ImageView iv2;

     @Override

     protected void onCreate(Bundle savedInstanceState) {

      super.onCreate(savedInstanceState);

      setContentView(R.layout.activity_main);

      this.iv1 = (ImageView) this.findViewById(R.id.iv1);

      this.iv2 = (ImageView) this.findViewById(R.id.iv2);

      Bitmap bitmap1 = BitmapFactory.decodeResource(getResources(),

        R.drawable.ic_launcher);

      this.iv1.setImageBitmap(bitmap1);

      Bitmap bitmap2 = Bitmap.createBitmap(bitmap1.getWidth(),

        bitmap1.getHeight(), bitmap1.getConfig());

      Canvas canvas = new Canvas(bitmap2);

      Matrix matrix = new Matrix();

      // 以图片中心为圆心旋转180度

      matrix.setRotate(180, bitmap1.getWidth() / 2, bitmap1.getHeight() / 2);

      Paint paint = new Paint();

      paint.setAntiAlias(true);

      canvas.drawBitmap(bitmap1, matrix, paint);

      iv2.setImageBitmap(bitmap2);

     }

    }

    图片的平移&镜面&倒影效果

    public class MainActivity extends Activity {

     private ImageView iv1;

     private ImageView iv2;

     @Override

     protected void onCreate(Bundle savedInstanceState) {

      super.onCreate(savedInstanceState);

      setContentView(R.layout.activity_main);

      this.iv1 = (ImageView) this.findViewById(R.id.iv1);

      this.iv2 = (ImageView) this.findViewById(R.id.iv2);

      Bitmap bitmap1 = BitmapFactory.decodeResource(getResources(),

        R.drawable.emo_im_cool);

      this.iv1.setImageBitmap(bitmap1);

      Bitmap bitmap2 = Bitmap.createBitmap(bitmap1.getWidth(),

        bitmap1.getHeight(), bitmap1.getConfig());

      Canvas canvas = new Canvas(bitmap2);

      Matrix matrix = new Matrix();

      // 镜子效果

      // matrix.setScale(-1, 1);

      // matrix.postTranslate(bitmap1.getWidth(), 0);

      // 倒影效果

       matrix.setScale(1, -1);

       matrix.postTranslate(0, bitmap1.getHeight());

      canvas.drawBitmap(bitmap1, matrix, new Paint());

      iv2.setImageBitmap(bitmap2);

     }

    }

    图片的颜色处理

    public class MainActivity extends Activity implements OnSeekBarChangeListener {

     private ImageView iv;

     private SeekBar sb_red;

     private SeekBar sb_green;

     private SeekBar sb_blue;

     private SeekBar sb_brightness; //亮度

     private SeekBar sb_saturation; //饱和度

     private Bitmap preBitmap;

     private Bitmap afterBitmap;

     private Canvas canvas;

     ColorMatrix matrix;

     private Paint paint;

     @Override

     protected void onCreate(Bundle savedInstanceState) {

      super.onCreate(savedInstanceState);

      setContentView(R.layout.activity_main);

      initData();

      initLintener();

     }

     private void initData() {

      this.iv = (ImageView) this.findViewById(R.id.iv);

      this.sb_red = (SeekBar) this.findViewById(R.id.sb_red);

      this.sb_green = (SeekBar) this.findViewById(R.id.sb_green);

      this.sb_blue = (SeekBar) this.findViewById(R.id.sb_blue);

      this.sb_brightness = (SeekBar) this.findViewById(R.id.sb_brightness);

      this.sb_saturation = (SeekBar) this.findViewById(R.id.sb_saturation);

      Options opts = new Options();

      opts.inSampleSize = 2;

      // 从资源文件获取一张不可修改的图片

      this.preBitmap = BitmapFactory.decodeResource(getResources(),

        R.drawable.after,opts );

      // 创建一张可以被修改的空白图片

      this.afterBitmap = Bitmap.createBitmap(

        this.preBitmap.getWidth(), this.preBitmap.getHeight(),

        this.preBitmap.getConfig());

      // 以空白图片为模版创建一张画布

      this.canvas = new Canvas(this.afterBitmap);

      // 创建画笔

      this.paint = new Paint();

      // 创建颜色矩阵

      this.matrix = new ColorMatrix();

      this.canvas.drawBitmap(this.preBitmap, new Matrix(), this.paint);

      this.iv.setImageBitmap(afterBitmap);

     }

     private void initLintener() {

      this.sb_red.setOnSeekBarChangeListener(this);

      this.sb_green.setOnSeekBarChangeListener(this);

      this.sb_blue.setOnSeekBarChangeListener(this);

      this.sb_brightness.setOnSeekBarChangeListener(this);

      this.sb_saturation.setOnSeekBarChangeListener(this);

     }

     @Override

     public void onProgressChanged(SeekBar seekBar, int progress,

       boolean fromUser) {

      switch (seekBar.getId()) {

      case R.id.sb_red:

       this.matrix.set(new float[]{

         progress/128f,0,0,0,0,//红色

         0,1,0,0,0,

         0,0,1,0,0,

         0,0,0,1,0

         

       });

       

       break;

      case R.id.sb_green:

       this.matrix.set(new float[]{

         1,0,0,0,0,

         0,progress/128f,0,0,0,//绿色

         0,0,1,0,0,

         0,0,0,1,0

         

       });

       break;

      case R.id.sb_blue:

       this.matrix.set(new float[]{

         1,0,0,0,0,

         0,1,0,0,0,

         0,0,progress/128f,0,0, // 蓝色

         0,0,0,1,0

         

       });

       break;

      case R.id.sb_brightness:

       this.matrix.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

         

       });

       break;

      case R.id.sb_saturation:

       this.matrix.setSaturation(progress/128f);

       break;

      }

      this.paint.setColorFilter(new ColorMatrixColorFilter(matrix));

      this.canvas.drawBitmap(this.preBitmap, new Matrix(), this.paint);

      this.iv.setImageBitmap(afterBitmap);

     }

     @Override

     public void onStartTrackingTouch(SeekBar seekBar) {

     }

     @Override

     public void onStopTrackingTouch(SeekBar seekBar) {

      // TODO Auto-generated method stub

     }

    }

    ?

    <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:gravity="center"

        android:orientation="vertical"

        tools:context=".MainActivity" >

        <ImageView

            android:id="@+id/iv"

            android:layout_width="wrap_content"

            android:layout_height="wrap_content" />

        <SeekBar

            android:id="@+id/sb_red"

            android:layout_width="match_parent"

            android:layout_height="wrap_content"

            android:max="255"

            android:progress="128" />

        <SeekBar

            android:id="@+id/sb_green"

            android:layout_width="match_parent"

            android:layout_height="wrap_content"

            android:max="255"

            android:progress="128" />

        <SeekBar

            android:id="@+id/sb_blue"

            android:layout_width="match_parent"

            android:layout_height="wrap_content"

            android:max="255"

            android:progress="128" />

        <SeekBar

            android:id="@+id/sb_brightness"

            android:layout_width="match_parent"

            android:layout_height="wrap_content"

            android:max="255"

            android:progress="128" />

        <SeekBar

            android:id="@+id/sb_saturation"

            android:layout_width="match_parent"

            android:layout_height="wrap_content"

            android:max="255"

            android:progress="128" />

    </LinearLayout>

    图片的合成

    public class MainActivity extends Activity {

     private ImageView iv;

     @Override

     protected void onCreate(Bundle savedInstanceState) {

      super.onCreate(savedInstanceState);

      setContentView(R.layout.activity_main);

      ImageView iv = (ImageView) this.findViewById(R.id.iv);

      Bitmap beauty = BitmapFactory.decodeResource(getResources(), R.drawable.after);

      Bitmap after = Bitmap.createBitmap(beauty.getWidth(),beauty.getHeight(), beauty.getConfig());

      Canvas canvas = new Canvas(after);

      Paint paint = new Paint();

      paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.XOR));

      canvas.drawBitmap(beauty, new Matrix(), paint );

      Bitmap bt = BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher);

      canvas.drawBitmap(bt, new Matrix(), paint );

      iv.setImageBitmap(after);

     }

    }

  • 相关阅读:
    leetcode 1 Two sum
    hdu1099
    hdu1098
    函数执行顺序
    浏览器滚动条
    2048的制作
    JavaScript--对象-检查一个对象是否是数组
    JavaScript--格式化当前时间
    JavaScript--模拟验证码
    JavaScript--模拟网络爬虫
  • 原文地址:https://www.cnblogs.com/freenovo/p/4469816.html
Copyright © 2011-2022 走看看