android生成缩略图

android生成缩略图 

package com.forwork.thumbnail;


import java.io.File;

import java.io.FileInputStream;

import java.io.FileNotFoundException;

import java.io.FileOutputStream;

import java.io.IOException;


import android.app.Activity;

import android.graphics.Bitmap;

import android.graphics.BitmapFactory;

import android.os.Bundle;

import android.util.Log;


public class Thumbnail extends Activity {

 

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

 

try {

saveMyBitmap("ooo");

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}


public void saveMyBitmap(String bitName) throws IOException {

File originalFile = new File("sdcard/pic/ll.jpg");

Bitmap bmp = decodeFile(originalFile);

 

 

File f = new File("/sdcard/" + bitName + ".jpg");

f.createNewFile();

FileOutputStream fOut = null;

try {

fOut = new FileOutputStream(f);

} catch (FileNotFoundException e) {

e.printStackTrace();

}

 

//BitmapFactory.Options options=new BitmapFactory.Options();

        //options.inSampleSize = 10;

//options.inTempStorage = new byte[16*1024];

 

//Bitmap bmp = BitmapFactory.decodeFile("/sdcard/pic/sd.jpg");

//Bitmap bmp = BitmapFactory.decodeFile("/sdcard/pic/ll.jpg", options);

//bmp = Bitmap.createScaledBitmap(bmp, 800, 480, true);

 

bmp.compress(Bitmap.CompressFormat.JPEG, 30, fOut);

try {

fOut.flush();

} catch (IOException e) {

e.printStackTrace();

}

try {

fOut.close();

} catch (IOException e) {

e.printStackTrace();

}

}

 

//decodes image and scales it to reduce memory consumption

private Bitmap decodeFile(File f){

   try {

       //Decode image size

       BitmapFactory.Options o = new BitmapFactory.Options();

       o.inJustDecodeBounds = true;

       BitmapFactory.decodeStream(new FileInputStream(f),null,o);


       //The new size we want to scale to

       final int REQUIRED_HEIGHT=800;

       final int REQUIRED_WIDTH=480;


       //Find the correct scale value. It should be the power of 2.

       int width_tmp=o.outWidth, height_tmp=o.outHeight;

       

       System.out.println(width_tmp+"  "+height_tmp);

       Log.w("===", (width_tmp+"  "+height_tmp));

       

       int scale=1;

       while(true){

           if(width_tmp/2<REQUIRED_WIDTH && height_tmp/2<REQUIRED_HEIGHT)

               break;

           width_tmp/=2;

           height_tmp/=2;

           scale++;

           

           Log.w("===", scale+"''"+width_tmp+"  "+height_tmp);

       }


       //Decode with inSampleSize

       BitmapFactory.Options o2 = new BitmapFactory.Options();

       o2.inSampleSize=scale;

       return BitmapFactory.decodeStream(new FileInputStream(f), null, o2);

   } catch (FileNotFoundException e) {}

   return null;

}

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值