• Android大图片之缩略图,以及对原图依照指定宽高裁剪成缩略图


    

    《Android大图片之变换缩略图,以及对原始大图片依照指定宽、高裁剪成缩略图》

    在Android的ImageView载入图像资源过程中,出于性能和内存开销的须要。有时候须要把一个原始的超大图片依照一定比例等比例缩放成较小的缩略图。或者须要把原始的超大图片,裁剪成指定宽高值的较小图片,针对这样的开发需求,能够使用Android SDK自身提供的工具类:ThumbnailUtils完毕。
    ThumbnailUtils的在Android官方的开发文档链接地址:
    http://developer.android.com/reference/android/media/ThumbnailUtils.html

    以下以一个超大图片为例,使用ThumbnailUtils等比例缩放成缩略图和依照指定的宽高裁剪成满足须要的缩略图。

    測试用的MainActivity.java :

    package zhangphil.thumbnail;
    
    import android.app.Activity;
    import android.graphics.Bitmap;
    import android.graphics.BitmapFactory;
    import android.media.ThumbnailUtils;
    import android.os.Bundle;
    import android.widget.ImageView;
    
    public class MainActivity extends Activity {
    
    	@Override
    	protected void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.activity_main);
    
    		ImageView imageView0 = (ImageView) findViewById(R.id.imageView0);
    		// 对原始资源图片不做不论什么处理和调整。直接载入到ImageView。
    		imageView0.setImageResource(R.drawable.image);
    
    		Bitmap sourceBitmap = BitmapFactory.decodeResource(this.getResources(),
    				R.drawable.image);
    
    		// 把原始bitmap截取成一个 MIN_SIZE * MIN_SIZE 的正方形缩略图。注意:默认是以中心为原点截取成缩略图。
    		int MIN_SIZE = 300;
    		ImageView imageView1 = (ImageView) findViewById(R.id.imageView1);
    		Bitmap bmp1 = ThumbnailUtils.extractThumbnail(sourceBitmap, MIN_SIZE,
    				MIN_SIZE);
    		imageView1.setImageBitmap(bmp1);
    		
    		
    		// 获得原始bitmap的高和宽。以下将对原始Bitmap等比例缩放成缩略图载入。

    int h = sourceBitmap.getHeight(); int w = sourceBitmap.getWidth(); // 缩略图缩放的比例尺 int THUMB_SIZE; THUMB_SIZE = 5; // 对原始图片Bitmap等比例缩小5倍的缩略图 ImageView imageView2 = (ImageView) findViewById(R.id.imageView2); Bitmap bmp2 = ThumbnailUtils.extractThumbnail(sourceBitmap, w / THUMB_SIZE, h / THUMB_SIZE); imageView2.setImageBitmap(bmp2); // 对原始图片Bitmap等比例缩小10倍的缩略图。

    THUMB_SIZE = 10; ImageView imageView3 = (ImageView) findViewById(R.id.imageView3); Bitmap bmp3 = ThumbnailUtils.extractThumbnail(sourceBitmap, w / THUMB_SIZE, h / THUMB_SIZE); imageView3.setImageBitmap(bmp3); } }


    MainActivity.java须要的布局文件activity_main.xml :

    <ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent" >
    
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="vertical" >
    
            <ImageView
                android:id="@+id/imageView0"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content" />
    
            <ImageView
                android:id="@+id/imageView1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content" />
    
            <ImageView
                android:id="@+id/imageView2"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content" />
    
            <ImageView
                android:id="@+id/imageView3"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content" />
        </LinearLayout>
    
    </ScrollView>


    须要处理的目标的大图,原始大图资源:



    代码执行处理结果如图所看到的:


  • 相关阅读:
    Wiin10 深色模式 暗色 省电 经济 护眼dark mode energy saving ecol
    云主机终端现实中文
    systemctl enable与systemctl start的区别
    centos技巧
    用国内的vps登录亚马逊的ec2
    小米 redmi note 8 打开开发者选项
    javascript数组、对象和Null的typeof同为object,区分解决办法
    组件中是否可以判断slot是否有内容?
    xlsx-style 行高设置
    修改xlsx-style 源码 解决报错
  • 原文地址:https://www.cnblogs.com/blfbuaa/p/7402869.html
Copyright © 2020-2023  润新知