В процессе отслеживания серьезных проблем с памятью в моем приложении я просматривал несколько дампов кучи из своего приложения, и большую часть времени у меня ОГРОМНОЕ растровое изображение, о котором я не знаю.
Этозанимает 9,4 МБ, или 9 830 400 байт, или фактически изображение 1280x1920 при 4 байтах на пиксель.
Я проверил в Eclipse MAT, это действительно байт [9830400], который имеет одну входящую ссылку, которая является android.graphics.Bitmap
.
Я бы хотел сбросить это в файл и попытаться увидеть его.Я не могу понять, откуда это.Мое самое большое изображение во всех моих рисунках - это 640x960 png, что занимает менее 3 МБ.
Я пытался использовать Eclipse для «копирования значения в файл», но я думаю, что он просто печатает буфер в файл, иЯ не знаю ни одной программы для работы с изображениями, которая могла бы считывать поток байтов и отображать его как изображение размером 4 байта на пиксель.
Любая идея?
Вот что я пробовал: вывести массив байтовв файл, поместите его в / sdcard / img и загрузите действие, подобное этому:
@Override
public void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
try {
final File inputFile = new File("/sdcard/img");
final FileInputStream isr = new FileInputStream(inputFile);
final Bitmap bmp = BitmapFactory.decodeStream(isr);
ImageView iv = new ImageView(this);
iv.setImageBitmap(bmp);
setContentView(iv);
Log.d("ImageTest", "Image was inflated");
} catch (final FileNotFoundException e) {
Log.d("ImageTest", "Image was not inflated");
}
}
Я ничего не видел.
Вы знаете, как закодировано изображение?Скажите, что оно хранится в byte[] buffer
.buffer[0]
красный, buffer[1]
зеленый и т. Д.