当前位置:编程学习 > wap >>

如何实现图片压缩

就像新浪微博一样,可以选择上传图片质量(高中低),对图片进行压缩改变文件大小,实现上传时节省流量。 --------------------编程问答-------------------- 找到了,大家可以参考这个位置:
http://topic.csdn.net/u/20110121/17/D4CA96B7-A17C-4713-AC81-C587EF66105F.html


压缩图片质量:   
bitmap.compress(Bitmap.CompressFormat.JPEG, quality, fos);   
其中的quality为0~100, 可以压缩图片质量, 不过对于大图必须对图片resize  

这个是等比例缩放:
bitmap = Bitmap.createScaledBitmap(bitmap, width, height, false);

这个是截取图片某部分:
bitmap = Bitmap.createBitmap(bitmap, x, y, width, height);

这几个方法都是针对Bitmap的, 不过鉴于Bitmap可以从file中读取, 也可以写入file.  

这是我知道Android自带库里中唯一可以缩放和压缩的图片方法. --------------------编程问答-------------------- 恭喜楼主找到答案!! --------------------编程问答-------------------- 楼主在提出问题之后,仅用了6分钟就找到了答案,霸气啊 --------------------编程问答-------------------- 顶啊。。。。。 --------------------编程问答-------------------- 恭喜LZ,问题解决了就好!呵呵 --------------------编程问答-------------------- 学习下,mark --------------------编程问答-------------------- 学习一下,以后说不定有用! --------------------编程问答-------------------- 哈哈,相互交流,相互学习。。。 --------------------编程问答-------------------- 哈哈,相互交流,相互学习。。。 --------------------编程问答-------------------- 使用matrix --------------------编程问答-------------------- 恭喜楼主,有时候的确是刚发了帖子就找到解决方法了。 --------------------编程问答-------------------- public static String getImageString(String imgFilePath){
   Bitmap mBitmap=BitmapFactory.decodeFile(imgFilePath);
        Matrix matrix = new Matrix();
        matrix.postScale(0.5f, 0.5f);
        Bitmap newBitmap=Bitmap.createBitmap(mBitmap, 0, 0, mBitmap.getWidth(), mBitmap.getHeight(), matrix, true);
        
   ByteArrayOutputStream out=new ByteArrayOutputStream();
   newBitmap.compress(CompressFormat.JPEG, 100, out);
   byte []bytes=out.toByteArray();
   String imageString=Base64.encodeToString(bytes, Base64.DEFAULT);
   return imageString;
   } --------------------编程问答-------------------- 以上是我进行图片上传时做的,花了很长时间,希望对大家有用! --------------------编程问答-------------------- mark --------------------编程问答-------------------- 恭喜楼主...学习了 --------------------编程问答-------------------- 路过学习了 --------------------编程问答--------------------
引用 12 楼 lovexjyong 的回复:
public static String getImageString(String imgFilePath){
   Bitmap mBitmap=BitmapFactory.decodeFile(imgFilePath);
        Matrix matrix = new Matrix();
        matrix.postScale(0.5f, ……


这个base64  是什么类?android里面没有该类,这时您自己写的吗?
另外返回的string什么东东? --------------------编程问答--------------------
引用 17 楼 jiang11034 的回复:
引用 12 楼 lovexjyong 的回复:
public static String getImageString(String imgFilePath){
   Bitmap mBitmap=BitmapFactory.decodeFile(imgFilePath);
        Matrix matrix = new Matrix();
        matrix.postS……


这是Android自带的类 --------------------编程问答-------------------- opencv压缩效果更佳

Mat mat = Highgui.imread(mImgPath);

Mat detMat = new Mat();
Size size = new Size(mat.width()/2, mat.height()/2);
Imgproc.resize(mat, detMat, size);
List<Integer> list = new ArrayList<Integer>();
list.add(Highgui.CV_IMWRITE_JPEG_QUALITY);
list.add(quality);
if(Highgui.imwrite("/sdcard/compress_half.jpg", mat, list)) --------------------编程问答--------------------
引用 19 楼 tsplaycool 的回复:
opencv压缩效果更佳

Mat mat = Highgui.imread(mImgPath);

Mat detMat = new Mat();
Size size = new Size(mat.width()/2, mat.height()/2);
Imgproc.resize(mat, detMat, size);
List<Integer> lis……



会不会内存溢出的问题。。。。压缩一张20MB的照片试试 --------------------编程问答--------------------
引用 20 楼 KPRF2009 的回复:
引用 19 楼 tsplaycool 的回复:
opencv压缩效果更佳

Mat mat = Highgui.imread(mImgPath);

Mat detMat = new Mat();
Size size = new Size(mat.width()/2, mat.height()/2);
Imgproc.resize(mat, detMat, size);
List<……


20M的没压过,压过14M的png图片到Jpeg格式 --------------------编程问答-------------------- 除
补充:移动开发 ,  Android
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,