相关疑难解决方法(0)

在Android上将大型位图文件的大小调整为缩放输出文件

我在一个文件中有一个大位图(比如3888x2592).现在,我想将该位图的大小调整为800x533并将其保存到另一个文件中.我通常会通过调用Bitmap.createBitmap方法来缩放位图,但它需要一个源位图作为第一个参数,我无法提供,因为将原始图像加载到Bitmap对象当然会超出内存(例如,请参见此处).

我也无法读取位图,例如,BitmapFactory.decodeFile(file, options)提供a BitmapFactory.Options.inSampleSize,因为我想将其调整为精确的宽度和高度.使用inSampleSize会将位图的大小调整为972x648(如果我使用inSampleSize=4)或778x518(如果我使用inSampleSize=5,它甚至不是2的幂).

我还想避免使用inSampleSize在第一步中使用例如972x648读取图像,然后在第二步中将其大小调整为800x533,因为与直接调整原始图像大小相比,质量会很差.

总结我的问题:是否有办法读取10MP或更高的大图像文件并将其保存到新的图像文件,调整大小到特定的新宽度和高度,而不会得到OutOfMemory异常?

我也尝试BitmapFactory.decodeFile(file, options)手动将Options.outHeight和Options.outWidth值设置为800和533,但它不起作用.

android resize image bitmap

214
推荐指数
8
解决办法
22万
查看次数

在Android中检测应用程序堆大小

如何以编程方式检测Android应用程序可用的应用程序堆大小?

我听说有一个功能可以在SDK的更高版本中执行此操作.无论如何,我正在寻找适合1.5及以上的解决方案.

memory heap android heap-memory

143
推荐指数
5
解决办法
10万
查看次数

Android OutOfMemoryError:加载图像时位图大小超过VM预算

可能重复:
Android:将图像加载到Bitmap对象时出现奇怪的内存不足问题

我正在使用一个Image Loader,它从URL加载图像并缓存到我的文件系统中.我发现使用ACRA的手机很少有以下崩溃报告

错误:

java.lang.OutOfMemoryError: bitmap size exceeds VM budget
    at android.graphics.BitmapFactory.nativeDecodeStream(Native Method)
    at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:493)
    at com.m7.nomad.utils.ImageLoader.decodeFile(ImageLoader.java:117)
    at com.m7.nomad.utils.ImageLoader.getBitmap(ImageLoader.java:88)
    at com.m7.nomad.utils.ImageLoader.access$0(ImageLoader.java:68)
    at com.m7.nomad.utils.ImageLoader$PhotosLoader.run(ImageLoader.java:170)
Run Code Online (Sandbox Code Playgroud)

ImageLoader.java

package com.m7.nomad.utils;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.Collections;
import java.util.Map;
import java.util.Stack;
import java.util.WeakHashMap;

import com.m7.nomad.R;

import android.app.Activity;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.widget.ImageView;

public class ImageLoader {

    MemoryCache memoryCache = new MemoryCache();
    FileCache fileCache;
    private Map<ImageView, String> imageViews = Collections …
Run Code Online (Sandbox Code Playgroud)

android bitmap out-of-memory

6
推荐指数
1
解决办法
2184
查看次数

标签 统计

android ×3

bitmap ×2

heap ×1

heap-memory ×1

image ×1

memory ×1

out-of-memory ×1

resize ×1