zoukankan      html  css  js  c++  java
  • 图片和文件传输压缩总结

    转载请注明出处:http://blog.csdn.net/krislight/article/


    1.壓縮圖片工具类

    public class CompressImage {
    	    private Bitmap bm;
    	    private String filePath;
    	    public CompressImage(String filePath) {
    	        this.filePath = filePath;
    	    }
    	    public Bitmap getBitmap() throws Exception{
    	        BitmapFactory.Options opt = new BitmapFactory.Options();
    	        opt.inJustDecodeBounds = true;
    	        bm = BitmapFactory.decodeFile(filePath, opt);
    
    	        int picWidth = opt.outWidth;
    	        int picHeight = opt.outHeight;
    
    	        WindowManager windowManager = getWindowManager();
    	        Display display = windowManager.getDefaultDisplay();
    	        int screenWidth = display.getWidth();
    	        int screenHeight = display.getHeight();
    
    	        opt.inSampleSize = 1;
    	        if (picWidth > picHeight) {
    	            if (picWidth > screenWidth)
    	                opt.inSampleSize = picWidth / screenWidth;
    	        } else {
    	            if (picHeight > screenHeight)
    
    	                opt.inSampleSize = picHeight / screenHeight;
    	        }
    	        opt.inJustDecodeBounds = false;
    	        bm = BitmapFactory.decodeFile(filePath, opt);
    
    	        return compressImage(bm,PIC_TRANSFORM_SIZE);
    
    	    }
    
    	    private Bitmap compressImage(Bitmap image,int size) {
    	        try {
    	            ByteArrayOutputStream baos = new ByteArrayOutputStream();
    	            image.compress(Bitmap.CompressFormat.JPEG, 100, baos);
    	            int options = 100;
    	            while (baos.toByteArray().length/1024 > size) {
    	                baos.reset();
    	                image.compress(Bitmap.CompressFormat.JPEG, options, baos);              
    	                options -= 10;
    	            }
    	            if(image!=null){
    	            	if(!image.isRecycled()){
    	            		image.recycle();
    	            	}
    	            	image = null;
    	            }
    	            ByteArrayInputStream isBm = new ByteArrayInputStream(
    	                    baos.toByteArray());
    	            Bitmap bitmap = BitmapFactory.decodeStream(isBm, null, null);
    	            return bitmap;
    	        } catch (Exception e) {
    	            e.printStackTrace();
    	            return null;
    	        } 
    	    }
    	}
    


    使用步骤:

       

    CompressImage compress=new CompressImage(m_strFileFullPath);
    					bitmap = compress.getBitmap(); 
    	                if(bitmap !=null){
    	            		String tSDPath = getExternalFilesDir(null).getAbsolutePath();    
    	            		File fileDir = new File(tSDPath,"/SendFileTemp/");
    	                    if (!fileDir.exists()) {
    	                    	fileDir.mkdirs();
    	                    }
    	                	String path = tSDPath + "/SendFileTemp/"+System.currentTimeMillis()+".jpg";
    	                	FileOutputStream fileOutputStream = new FileOutputStream(new File(path));
    	                	bitmap.compress(Bitmap.CompressFormat.JPEG, 100, fileOutputStream);
    	                	file = new File(path);
    	                }
    


    2.壓縮文件工具類

      

    public static void zipFile(String oriFilePath, String zipFilePath)
    			throws IOException {
    		BufferedInputStream origin = null;
    		ZipOutputStream out = new ZipOutputStream(new BufferedOutputStream(
    				new FileOutputStream(zipFilePath)));
    		try {
    			byte data[] = new byte[1000];
    
    			FileInputStream fi = new FileInputStream(oriFilePath);
    			origin = new BufferedInputStream(fi, 1000);
    			try {
    				ZipEntry entry = new ZipEntry(oriFilePath.substring(oriFilePath
    						.lastIndexOf("/") + 1));
    				out.putNextEntry(entry);
    				int count;
    				while ((count = origin.read(data, 0, 1000)) != -1) {
    					out.write(data, 0, count);
    				}
    			} finally {
    				origin.close();
    			}
    		} finally {
    			out.close();
    		}
    	}
    


    使用时:

              

    String tSDPath = getExternalFilesDir(null).getAbsolutePath();    
                		File fileDir = new File(tSDPath,"/SendFileTemp/");
                        if (!fileDir.exists()) {
                        	fileDir.mkdirs();
                        }
                    	String path = tSDPath + "/SendFileTemp/"+System.currentTimeMillis()+".zip";
                    	Utils.zipFile(m_strFileFullPath, path);
                    	file = new File(path);	
    


    更多压缩技术参考

    http://snowolf.iteye.com/blog/465433

  • 相关阅读:
    201275判断joomla首页的方法
    phpcms添加视频模块(未完)
    Joomla学习总结
    Joomla资源
    2012725 K2组件学习
    Apache Commons configuration使用入门
    linux学习(7)压缩与解压缩
    linux学习(6)redhat安装xwindow环境
    linux学习(5)iptables防火墙设置
    java实现的一个分页算法
  • 原文地址:https://www.cnblogs.com/krislight1105/p/3748322.html
Copyright © 2011-2022 走看看