Android 通過比例剪切圖片
来源:互联网 发布:linux脚本编程 编辑:程序博客网 时间:2024/05/01 03:18
import java.io.File;import java.io.FileOutputStream;import android.content.Context;import android.graphics.Bitmap;import android.graphics.Bitmap.CompressFormat;import android.graphics.Bitmap.Config;import android.graphics.Canvas;import android.graphics.Matrix;import android.view.View;public class CutPhotoCustomView extends View {int cavas_width = 640;//畫布大小int cavas_height = 480;int cut_width;int cut_height;Matrix cut_matrix = new Matrix();int startx = 0;//剪切的起始點int starty = 0;Canvas cutCanvas = null;Bitmap cacheBitmap = null;Bitmap resultBitmap = null;//要保存的指定大小的Bitmappublic CutPhotoCustomView(Context context) {super(context);cacheBitmap = Bitmap.createBitmap(cavas_width, cavas_height, Config.ARGB_8888);cutCanvas = new Canvas();cutCanvas.setBitmap(cacheBitmap);}@Overrideprotected void onDraw(Canvas canvas) {canvas.drawBitmap(cacheBitmap, 0,0, null);}// save 640*480 jpeg 將圖片按比例剪切成640*480像素問題private void cut640_480Photo(String file_name){cutCanvas.drawBitmap(resultBitmap, 0,0,null);String foldPath = "/mnt/sdcard/DCIM/Camera/";File foldFile = new File(foldPath);if(!foldFile.exists()){foldFile.mkdirs();}String fileName=foldPath+file_name+".jpg";FileOutputStream out;try {File saveFile = new File(fileName);if(saveFile.exists()){saveFile.delete();}out = new FileOutputStream(new File(fileName));cacheBitmap.compress(CompressFormat.JPEG, 85, out);//保存文件out.close();//StaticData.inMap(file_name, fileName);} catch (Exception e) {e.printStackTrace();}}//set backgroud imgpublic Bitmap setCanvasBackgroud(Bitmap bitmap,String file_name){if(bitmap.getWidth() > bitmap.getHeight()){//當width>height的時候,設置縮放比例cut_width = (bitmap.getHeight()*4) / 3;cut_height = bitmap.getHeight();float xb = ((float) cavas_width) / cut_width;float yb = ((float) cavas_height) / cut_height;cut_matrix.postScale(xb,yb);startx = (bitmap.getWidth() - cut_width)/2;resultBitmap = Bitmap.createBitmap(bitmap,startx,starty,cut_width,cut_height,cut_matrix,true);}else if(bitmap.getWidth() < bitmap.getHeight()){//當width < height的時候,設置縮放比例cut_width = bitmap.getWidth();cut_height = (bitmap.getWidth()*3)/4;float xb = ((float) cavas_width) / cut_width;float yb = ((float) cavas_height) / cut_height;cut_matrix.postScale(xb,yb);starty = (bitmap.getHeight() - cut_height)/2;resultBitmap = Bitmap.createBitmap(bitmap,0,starty,cut_width,cut_height,cut_matrix,true);}//把文件保存起來cut640_480Photo(file_name);return resultBitmap;}}
上面的寫法是先根據比例把圖片縮小,我這里是按4比3(長寬比)來縮放的!然后再從畫布的一個起始點(startx,starty)截取長為640,寬為480的圖片大小
- Android 通過比例剪切圖片
- 调用系统剪切方法,剪切任意比例图片
- jQuery实现等比例缩放大图片
- jQuery实现等比例缩放大图片
- jQuery实现等比例缩放大图片
- jQuery实现等比例缩放大图片
- android 复制、剪切、粘贴
- android 剪切图片
- android 图片剪切
- android 复制、剪切、粘贴
- android图片剪切
- Android 复制剪切操作
- android 复制、剪切、粘贴
- Android实现位图剪切
- android 拍照剪切图片
- android 剪切图片
- Android图片操作-剪切
- android 剪切图片
- 日志组件logback的介绍及配置使用方法(二)
- ABC
- 进制转换
- 静态变量与非静态变量的区别
- GLassFish v4 新特性介绍
- Android 通過比例剪切圖片
- struts2.0文件下载
- Adapter:适配器模式
- wampserver2.0(Windows Apache Mysql PHP集成安装环境)
- Android多媒体学习:实现仿百度图片查看功能
- ORACLE常用函数
- char * diff in c & c++
- 添加定制的Edit Menu
- LD_LIBRARY_PATH 和 /etc /ld.so.cache文件