android-下载缩略图然后再显示的问题

问题描述

下载缩略图然后再显示的问题

我想从 URL 上下载一个图片再放到 SD card 中,再在 imageview 中显示它的缩略图:

try {
Download(URL);  //download picture to SD card/Download
File myfile = new File(Environment.getExternalStorageDirectory() + "/Download/", filename);
Drawable photo = null;
photo = Drawable.createFromPath(myfile.getPath());
imageview.setBackgroundDrawable(photo);
}

它显示初始化照片,但是当图像放大就会发生内存错误。所以我想显示小点的图像。那么我该如何做能生成缩略图再显示呢?或者如何让 android 系统生成缩略图?

解决方案

网上很多,随便找个地方copy了个给你

 private Bitmap getImageThumbnail(String imagePath, int width, int height) {
        Bitmap bitmap = null;
        BitmapFactory.Options options = new BitmapFactory.Options();
        options.inJustDecodeBounds = true;
        // 获取这个图片的宽和高,注意此处的bitmap为null
        bitmap = BitmapFactory.decodeFile(imagePath, options);
        options.inJustDecodeBounds = false; // 设为 false
        // 计算缩放比
        int h = options.outHeight;
        int w = options.outWidth;
        int beWidth = w / width;
        int beHeight = h / height;
        int be = 1;
        if (beWidth < beHeight) {
            be = beWidth;
        } else {
            be = beHeight;
        }
        if (be <= 0) {
            be = 1;
        }
        options.inSampleSize = be;
        // 重新读入图片,读取缩放后的bitmap,注意这次要把options.inJustDecodeBounds 设为 false
        bitmap = BitmapFactory.decodeFile(imagePath, options);
        // 利用ThumbnailUtils来创建缩略图,这里要指定要缩放哪个Bitmap对象
        bitmap = ThumbnailUtils.extractThumbnail(bitmap, width, height,
                ThumbnailUtils.OPTIONS_RECYCLE_INPUT);
        return bitmap;
    }
时间: 2024-10-03 10:25:06

android-下载缩略图然后再显示的问题的相关文章

android平台拍照后先剪裁再显示图片实现方法

mainActivity如下: package cn.testcamera; import java.io.File; import java.text.SimpleDateFormat; import java.util.Date; import android.app.Activity; import android.content.ContentResolver; import android.content.ContentUris; import android.content.Inte

Android拍照后先剪裁再显示图片

mainActivity如下: package cn.testcamera; import java.io.File; import java.text.SimpleDateFormat; import java.util.Date; import android.app.Activity; import android.content.ContentResolver; import android.content.ContentUris; import android.content.Inte

文件下载-android下载文件打不开

问题描述 android下载文件打不开 我用mars老师的源码, /** * 该函数返回整形 -1:代表下载文件出错 0:代表下载文件成功 1:代表文件已经存在 */ public int downFile(String urlStr, String path, String fileName) { InputStream inputStream = null; try { FileUtils fileUtils = new FileUtils(); if (fileUtils.isFileEx

Android下载管理DownloadManager功能扩展和bug修改

本文主要介绍如何修改Android系统下载管理,以支持更多的功能及部分bug修改和如何编译生效.目前内容包括暂停下载.继续下载.通知设置NotiExtra和NotiClass.wifi切换到3g自动暂停.Bug修改. 更多下载相关开源项目可见 Android 下载. PS: 很多童鞋不是自己做rom,所以就算修改了系统源码编译出来的包在其他系统上也不通用 这里推荐DownloadProvider@Github(并不是我的开源项目,我的项目为TrineaAndroidCommon@Github,包

Android 个人理财工具六:显示账单明细 下_Android

     上一节的显示账单明细 上中,账单明细的显示已经基本实现,本文主要整理下代码,实现此窗口的查询和删除功能:按下Menu菜单时弹出选择月份的窗口,可选择明细的月份:在ListView上长按可弹出确认删除的对话框,以完成删除.        下面上图:        这里面有个OnItemLongClickListener 事件,这个事件的用法如下:        首先activity 里面implements OnItemLongClickListener,然后如下面的代码所写: Java

android studio中的preview显示空白

问题描述 android studio中的preview显示空白 刚刚接触android studio,今天新建项目的时候,出现了preview中rendering problems,我进行更新后没有再报错,但是现在显示一片空白,请教各位大神这是什么情况 解决方案 这个sdk version更改一下其他值 解决方案二: 而且我已经在style文件里加了Base.,还是没用 解决方案三: 右上方 sdk 版本可能选的不对

html页post给php,为什么变成下载php而不是显示php页?

问题描述 html页post给php,为什么变成下载php而不是显示php页? 刚开始学php 这是html页 please fnish it Name:MrMrsMs Email Address: Response:This is ... excellent okay boring Comment: php页 <?php $title=$_POST['title']; $name=$_POST['name']; $response=$_POST['response']; $comment=$_

Android DrawableTextView图片文字居中显示实例

在我们开发中,TextView设置Android:drawableLeft一定使用的非常多,但Drawable和Text同时居中显示可能不好控制,有没有好的办法解决呢? 小编的方案是通过自定义TextView实现. 实现的效果图: 注:第一行为原生TextView添加android:drawableLeft 第二行为自定义TextView实现的效果. 实现思路: 继承TextView,覆盖onDraw(Canvas canvas),在onDraw中先将canvas进行translate平移,再调

Android编程实现Toast只显示最后一条的方法

本文实例讲述了Android编程实现Toast只显示最后一条的方法.分享给大家供大家参考,具体如下: 在做Android开发中,时不时的可能会用到Toast,但用Toast的时候,连续使用会存在一个问题,就是一条条显示Toast.而不是直接显示最后一条.因此,根据此需求,现在写了ToastUtil这个类,该类中有三个方法供选择. ToastUtil.Java import android.content.Context; import android.graphics.PixelFormat;