Bitmap.createBitmap 内存溢出 Bitmap newBmap = Bitmap.createBitmap(bmap, 0, 0, bmap.getWidth(), bmap.getHeight(), mx, true);Activity中没有其他资源了,bmap的图片也很小,为什么新的bmap对象 会出现内存超出呢? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 换过N张了,png,直接用bmp的图都会错图片10kb以下。 Bitmap newBmap = Bitmap.createBitmap(bmap, 0, 0, bmap.getWidth(), bmap.getHeight(), mx, true);package com.ImagesZoom;import android.app.Activity;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.graphics.Matrix;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.ImageView;import android.widget.RelativeLayout;public class ImagesZoom extends Activity { private Button amplify ; private Button narrow; private ImageView viewer; private Bitmap bmap; private RelativeLayout layout; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); //init amplify = (Button) findViewById(R.id.big); narrow = (Button) findViewById(R.id.small); layout = (RelativeLayout) findViewById(R.layout.main); viewer = (ImageView) findViewById(R.id.viewer); bmap = BitmapFactory.decodeResource(getResources(), R.drawable.cc); viewer.setImageBitmap(bmap); amplify.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { ImagesZoom.this.amplify(1.25f); } }); narrow.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { ImagesZoom.this.narrow(0.8f); } }); } private void amplify(float f){ Matrix mx = new Matrix(); mx.setScale(bmap.getWidth() * f, bmap.getHeight() * f); Bitmap newBmap = Bitmap.createBitmap(bmap, 0, 0, bmap.getWidth(), bmap.getHeight(), mx, true); ImageView reViewer = new ImageView(ImagesZoom.this); reViewer.setImageBitmap(newBmap); layout.removeView(viewer); layout.addView(reViewer); setContentView(layout); } private void narrow(float f){ Matrix mx = new Matrix(); mx.setScale(bmap.getWidth() * f, bmap.getHeight() * f); Bitmap newBmap = Bitmap.createBitmap(bmap, 0, 0, bmap.getWidth(), bmap.getHeight(), mx, true); ImageView reViewer = new ImageView(ImagesZoom.this); reViewer.setImageBitmap(newBmap); layout.removeView(viewer); layout.addView(reViewer); setContentView(layout); }} Bitmap newBmap = Bitmap.createBitmap(bmap, 0, 0, bmap.getWidth(), bmap.getHeight(), mx, true); 代码贴上面了。应该没啥问题。。 你的mx是错的,mx.setScale(bmap.getWidth() * f, bmap.getHeight() * f);这个不知道放大多少倍了float scaleWidth = ((float) newWidth) / width; float scaleHeight = ((float) newHeight) / height; mx.setScale(scaleWidth,scaleHeight); 遇到以上同样问题,解决不了,private Bitmap bit; bit=BitmapFactory.decodeResource(getResources(),R.drawable.icon); Matrix matrix=new Matrix(); //matrix.postScale(bitmapwidth, bitmapheight); int width,height; width=bit.getWidth(); height=bit.getHeight(); matrix.postScale(width, height); Bitmap resizebtm=Bitmap.createBitmap(bit,0,0,width,height,matrix,true); GERRIT 添加新用户怎么添加? 分辨率和屏幕大小 关于OOM 请问像微信那种自带插件的程序是如何编写的? Android设备如何知道wifi局域网内有多少台主机? 關於simpleadapter中跳轉活動的問題 Android 2.2 对硬件配置的要求到底有多高? 《2012Sundy高级课程更新》Android深入浅出系列课程文章列表 java运行环境的问题! DDMS中调试GPS轨迹是,怎么导入GPX,KML文件 BroadcastReceiver怎么传递消息给Service? 返回键设置的问题
package com.ImagesZoom;import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Matrix;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.RelativeLayout;public class ImagesZoom extends Activity {
private Button amplify ;
private Button narrow;
private ImageView viewer;
private Bitmap bmap;
private RelativeLayout layout;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//init
amplify = (Button) findViewById(R.id.big);
narrow = (Button) findViewById(R.id.small);
layout = (RelativeLayout) findViewById(R.layout.main);
viewer = (ImageView) findViewById(R.id.viewer);
bmap = BitmapFactory.decodeResource(getResources(), R.drawable.cc);
viewer.setImageBitmap(bmap);
amplify.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
ImagesZoom.this.amplify(1.25f);
}
});
narrow.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
ImagesZoom.this.narrow(0.8f);
}
});
}
private void amplify(float f){
Matrix mx = new Matrix();
mx.setScale(bmap.getWidth() * f, bmap.getHeight() * f);
Bitmap newBmap = Bitmap.createBitmap(bmap, 0, 0, bmap.getWidth(), bmap.getHeight(), mx, true);
ImageView reViewer = new ImageView(ImagesZoom.this);
reViewer.setImageBitmap(newBmap);
layout.removeView(viewer);
layout.addView(reViewer);
setContentView(layout);
}
private void narrow(float f){
Matrix mx = new Matrix();
mx.setScale(bmap.getWidth() * f, bmap.getHeight() * f);
Bitmap newBmap = Bitmap.createBitmap(bmap, 0, 0, bmap.getWidth(), bmap.getHeight(), mx, true);
ImageView reViewer = new ImageView(ImagesZoom.this);
reViewer.setImageBitmap(newBmap);
layout.removeView(viewer);
layout.addView(reViewer);
setContentView(layout);
}}
mx.setScale(bmap.getWidth() * f, bmap.getHeight() * f);这个不知道放大多少倍了
float scaleWidth = ((float) newWidth) / width;
float scaleHeight = ((float) newHeight) / height;
mx.setScale(scaleWidth,scaleHeight);
private Bitmap bit;
bit=BitmapFactory.decodeResource(getResources(),R.drawable.icon);
Matrix matrix=new Matrix();
//matrix.postScale(bitmapwidth, bitmapheight);
int width,height;
width=bit.getWidth();
height=bit.getHeight();
matrix.postScale(width, height);
Bitmap resizebtm=Bitmap.createBitmap(bit,0,0,width,height,matrix,true);