android图片处理

 

通过内置的图片程序来选择图片

Intent intent = new Intent(Intent.ACTION_PICK,

android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);

       startActivityForResult(intent, 0);

 

 

 

创建一个空的Bitmap,然后把一个已经存在的Bitmap放进去

/*

* 将原来的bitmap画到新的易变的alteredBitmap对象中

*/

Bitmap alteredBitmap = Bitmap.createBitmap(bmp.getWidth(), bmp.getHeight(), bmp.getConfig());

Canvas canvas = new Canvas(alteredBitmap);

Paint paint = new Paint();

canvas.drawBitmap(bmp, 0, 0, paint);

 

图片缩放和翻转

Matrix matrix = new Matrix();

//matrix.setRotate(15);

matrix.setRotate(15, bmp.getWidth()/2, bmp.getHeight()/2); //从图片中心点开始旋转

canvas.drawBitmap(bmp, matrix, paint);



 

            

matrix.setScale(1.5f, 1);

第一个参数是x轴上的缩放,第二个参数是y轴上的缩放


 

 
 

Translate:图片在x轴或y轴移动

setTranslate方法接收两个参数,分别是x、y轴上的移动


matrix.setTranslate(15, 10);



 

              

 

以上的方法都有pre和post版本,可以使我们在一次时间序列中执行多于一次的变换

matrix.setScale(1.5f, 1.5f);

matrix.postRotate(15, bmp.getWidth()/2, bmp.getHeight()/2);


 

实现镜面翻转效果

 matrix.setScale(-1, 1);

 matrix.postTranslate(bmp.getWidth(), 0);


matrix.setScale(1, -1);

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


 

 

//It is initialized with the same density as the original bitmap.

//变换后的图片与原图片同样大小

Matrix matrix = new Matrix();

matrix.setRotate(15,bmp.getWidth()/2,bmp.getHeight()/2);

Bitmap alteredBitmap = Bitmap.createBitmap(bmp, 0, 0, bmp.getWidth(), bmp.getHeight(), matrix, false);

alteredImageView.setImageBitmap(alteredBitmap);

 

Java代码 复制代码  收藏代码
  1. package com.liang.imageTest;   
  2.   
  3. import java.io.FileNotFoundException;   
  4.   
  5. import android.app.Activity;   
  6. import android.content.Intent;   
  7. import android.graphics.Bitmap;   
  8. import android.graphics.BitmapFactory;   
  9. import android.graphics.Canvas;   
  10. import android.graphics.Matrix;   
  11. import android.graphics.Paint;   
  12. import android.net.Uri;   
  13. import android.os.Bundle;   
  14. import android.util.Log;   
  15. import android.view.Display;   
  16. import android.view.View;   
  17. import android.view.View.OnClickListener;   
  18. import android.widget.Button;   
  19. import android.widget.ImageView;   
  20.   
  21. public class ChoosePictureActivity1 extends Activity implements OnClickListener{   
  22.   
  23.     ImageView choseImageView;   
  24.     ImageView alteredImageView;   
  25.     Button choosePicture;   
  26.        
  27.     @Override  
  28.     public void onCreate(Bundle savedInstanceState){   
  29.         super.onCreate(savedInstanceState);   
  30.            
  31.         setContentView(R.layout.choosepicture1);   
  32.            
  33.         choseImageView = (ImageView)findViewById(R.id.chosenImageView);   
  34.         alteredImageView = (ImageView)findViewById(R.id.alteredImageView);   
  35.            
  36.         choosePicture = (Button)findViewById(R.id.choosePictureButton);   
  37.         choosePicture.setOnClickListener(this);   
  38.     }   
  39.   
  40.     @Override  
  41.     public void onClick(View v) {   
  42.         Intent intent = new Intent(Intent.ACTION_PICK,   
  43.                 android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);   
  44.         startActivityForResult(intent, 0);   
  45.     }   
  46.   
  47.     @Override  
  48.     protected void onActivityResult(int requestCode, int resultCode, Intent data) {   
  49.         super.onActivityResult(requestCode, resultCode, data);   
  50.            
  51.         if(resultCode==RESULT_OK){   
  52.             Uri imageFileUri = data.getData();   
  53.                
  54.             Display currentDisplay = getWindowManager().getDefaultDisplay();   
  55.             int dw = currentDisplay.getWidth();   
  56.             int dh = currentDisplay.getHeight();   
  57.                
  58.             try{   
  59.                 BitmapFactory.Options options = new BitmapFactory.Options();   
  60.                 options.inJustDecodeBounds = true;   
  61.                    
  62.                 Bitmap bmp = BitmapFactory.decodeStream(getContentResolver().openInputStream(imageFileUri),   
  63.                         null,options);   
  64.                    
  65.                 /*  
  66.                  * 图片得尺寸比屏幕大小大,按照图片尺寸与屏幕高、宽最大的比例来缩小图片  
  67.                  */  
  68.                 int heightRatio = (int)Math.ceil(options.outHeight/(float)dh);   
  69.                 int widthRatio = (int)Math.ceil(options.outWidth/(float)dw);   
  70.                    
  71.                 if(heightRatio > 1 && widthRatio > 1){   
  72.                     if(heightRatio > widthRatio)   
  73.                         options.inSampleSize = heightRatio;   
  74.                     else  
  75.                         options.inSampleSize = widthRatio;   
  76.                 }   
  77.                    
  78.                 options.inJustDecodeBounds = false;   
  79.                 bmp = BitmapFactory.decodeStream(getContentResolver().openInputStream(imageFileUri), null, options);   
  80.                    
  81.                 choseImageView.setImageBitmap(bmp);   
  82.                 /*  
  83.                  * 将原来的bitmap画到新的易变的alteredBitmap对象中  
  84.                  */  
  85.                 Bitmap alteredBitmap = Bitmap.createBitmap(bmp.getWidth()*2, bmp.getHeight()*2, bmp.getConfig());   
  86.                 Canvas canvas = new Canvas(alteredBitmap);   
  87.                 Paint paint = new Paint();   
  88.                 /*  
  89.                  * 1.  
  90.                  */  
  91. //              canvas.drawBitmap(bmp, 0, 0, paint);   
  92.                 /*  
  93.                  * 2.旋转   
  94.                  */  
  95.                 Matrix matrix = new Matrix();   
  96. //              matrix.setRotate(15);   
  97. //              matrix.setRotate(15, bmp.getWidth()/2, bmp.getHeight()/2);//从图片中心点开始旋转   
  98.                 /*  
  99.                  * 3.缩放  
  100.                  */  
  101. //              matrix.setScale(1.5f, 1);//x轴1.5倍,y轴1倍   
  102.                 /*  
  103.                  * 3-1.翻转  
  104.                  */  
  105. //              matrix.setScale(-1, 1);   
  106. //              matrix.postTranslate(bmp.getWidth(), 0);   
  107.                 /*  
  108.                  * 3-2.翻转  
  109.                  */  
  110. //              matrix.setScale(1, -1);   
  111. //              matrix.postTranslate(0, bmp.getHeight());   
  112.                 /*  
  113.                  * 4.移动  
  114.                  */  
  115. //              matrix.setTranslate(15, 10);   
  116.                 /*  
  117.                  * 5.序列  
  118.                  */  
  119. //              matrix.setScale(1.5f, 1.5f);   
  120. //              matrix.postRotate(15, bmp.getWidth()/2, bmp.getHeight()/2);   
  121.                    
  122.                 canvas.drawBitmap(bmp, matrix, paint);   
  123.                 alteredImageView.setImageBitmap(alteredBitmap);   
  124.                 /*  
  125.                  * 图片与原图片大小一样  
  126.                  */  
  127.                 /*  
  128.                 Matrix matrix = new Matrix();  
  129.                 matrix.setRotate(15,bmp.getWidth()/2,bmp.getHeight()/2);  
  130.                 Bitmap alteredBitmap = Bitmap.createBitmap(bmp, 0, 0, bmp.getWidth(), bmp.getHeight(), matrix, false);  
  131.                 alteredImageView.setImageBitmap(alteredBitmap);  
  132.                 */  
  133.             }catch(FileNotFoundException e){   
  134.                 Log.v("ERROR",e.toString());   
  135.             }   
  136.         }   
  137.     }   
  138.        
  139. }  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值