当前位置:操作系统 > 安卓/Android >>

Android的图片压缩类ThumbnailUtils,供源码研究

今天闲的无聊想写一个图片的应用,想压缩图片,百度了下有关于图片压缩的消息 
 
没想到android真给力啊,在2.2后就给我封装了成一个压缩的类 
 
ThumbnailUtils 
早知道,就不会去写,原来有在弄关于图片压缩弄的我头好痛啊,也写过关于根据路劲压缩,获取指定大小位图的类 
现在好了有 ThumbnailUtils 下面跟就学习学习: 
看了下 主要有三个方法可以调用: 
1、extractThumbnail (source, width, height): 
 /**
 * 
 * 创建一个指定大小的缩略图
 * @param source 源文件(Bitmap类型)
 * @param width  压缩成的宽度
 * @param height 压缩成的高度
 */  
ThumbnailUtils.extractThumbnail(source, width, height);  
 
  
 
2、extractThumbnail(source, width, height, options): 
 /**
 * 创建一个指定大小居中的缩略图
 * 
 * @param source 源文件(Bitmap类型)
 * @param width  输出缩略图的宽度
 * @param height 输出缩略图的高度
 * @param options 如果options定义为OPTIONS_RECYCLE_INPUT,则回收
 * @param source这个资源文件
 * (除非缩略图等于@param source)
 * 
 */  
 ThumbnailUtils.extractThumbnail(source, width, height, options);  
  
  
3、createVideoThumbnail(filePath, kind): 
 
/**
 * 创建一张视频的缩略图
 * 如果视频已损坏或者格式不支持可能返回null
 * 
 * @param filePath 视频文件路径  如:/sdcard/android.3gp
 * @param kind kind可以为MINI_KIND或MICRO_KIND
 * 
 */  
ThumbnailUtils.createVideoThumbnail(filePath, kind);  
今天闲的无聊想写一个图片的应用,想压缩图片,百度了下有关于图片压缩的消息

没想到android真给力啊,在2.2后就给我封装了成一个压缩的类

ThumbnailUtils
早知道,就不会去写,原来有在弄关于图片压缩弄的我头好痛啊,也写过关于根据路劲压缩,获取指定大小位图的类
现在好了有 ThumbnailUtils 下面跟就学习学习:
看了下 主要有三个方法可以调用:
1、extractThumbnail (source, width, height):
 /**
 *
 * 创建一个指定大小的缩略图
 * @param source 源文件(Bitmap类型)
 * @param width  压缩成的宽度
 * @param height 压缩成的高度
 */
ThumbnailUtils.extractThumbnail(source, width, height);

 

2、extractThumbnail(source, width, height, options):
 /**
 * 创建一个指定大小居中的缩略图
 *
 * @param source 源文件(Bitmap类型)
 * @param width  输出缩略图的宽度
 * @param height 输出缩略图的高度
 * @param options 如果options定义为OPTIONS_RECYCLE_INPUT,则回收
 * @param source这个资源文件
 * (除非缩略图等于@param source)
 *
 */
 ThumbnailUtils.extractThumbnail(source, width, height, options);
 
 
3、createVideoThumbnail(filePath, kind):

/**
 * 创建一张视频的缩略图
 * 如果视频已损坏或者格式不支持可能返回null
 *
 * @param filePath 视频文件路径  如:/sdcard/android.3gp
 * @param kind kind可以为MINI_KIND或MICRO_KIND
 *
 */
ThumbnailUtils.createVideoThumbnail(filePath, kind);

考虑到有的哥们没有下载相关源码 下面则是:[java]  
 /*
 * Copyright (C) 2009 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */ 
 
package android.media; 
 
import android.content.ContentResolver; 
import android.content.ContentUris; 
import android.content.ContentValues; 
import android.database.Cursor; 
import android.graphics.Bitmap; 
import android.graphics.BitmapFactory; 
import android.graphics.Canvas; 
import android.graphics.Matrix; 
import android.graphics.Rect; 
import android.media.MediaMetadataRetriever; 
import android.media.MediaFile.MediaFileType; 
import android.net.Uri; 
import android.os.ParcelFileDescriptor; 
import android.provider.BaseColumns; 
import android.provider.MediaStore.Images; 
import android.provider.MediaStore.Images.Thumbnails; 
import android.util.Log; 
 
import java.io.FileInputStream; 
import java.io.FileDescriptor; 
import java.io.IOException; 
import java.io.OutputStream; 
 
/**
 * Thumbnail generation routines for media provider.
 */ 
 
public class ThumbnailUtils { 
    private static final String TAG = "ThumbnailUtils"; 
 
    /* Maximum pixels size for created bitmap. */ 
    private static final int MAX_NUM_PIXELS_THUMBNAIL = 512 * 384; 
    private static final int MAX_NUM_PIXELS_MICRO_THUMBNAIL = 128 * 128; 
    private static final int UNCONSTRAINED = -1; 
 
    /* Options used internally. */ 
    private static final int OPTIONS_NONE = 0x0; 
    private static final int OPTIONS_SCALE_UP = 0x1; 
 
    /**
     * Constant used to indicate we should recycle the input in
     * {@link #extractThumbnail(Bitmap, int, int, int)} unless the output is the input.
     */ 
    public static final int OPTIONS_RECYCLE_INPUT = 0x2; 
 
    /**
     * Constant used to indicate the dimension of mini thumbnail.
     * @hide Only used by media framework and media provider internally.
     */ 
    public static final int TARGET_SIZE_MINI_THUMBNAIL = 320; 
 
    /**
     * Constant used to indicate the dimension of micro thumbnail.
     * @hide Only used by media framework and media provider internally.
     */ 
    public static final int TARGET_SIZE_MICRO_THUMBNAIL = 96; 
 
    /**
     * This method first examines if the thumbnail embedded in EXIF is bigger than our target
     * size. If not, then it'll create a thumbnail from original image. Due to efficiency
     * consideration, we want to let MediaThumbRequest avoid calling this method twice for
     * both kinds, so it only requests for MICRO_KIND and set saveImage to true.
     *
补充:移动开发 , Android ,

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,