我试图从我的Android应用程序在Facebook墙上发布图像。为此我从layout.Here是我的代码
创建了一个位图。 System.gc();
Bitmap bitmap = Bitmap.createBitmap(
view.getMeasuredWidth(),
view.getMeasuredHeight(),
Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(bitmap);
Drawable bgDrawable = newLinearLayout.getBackground();
if (bgDrawable != null)
bgDrawable.draw(canvas);
else
canvas.drawColor(Color.WHITE);
view.draw(canvas);
Matrix matrix = new Matrix();
// resize the bit map
matrix.postScale(1.0f, 1.0f);
// recreate the new Bitmap
Bitmap resizedBitmap = null;
resizedBitmap = Bitmap.createBitmap(bitmap, 0, 0,
bitmap.getWidth(), bitmap.getHeight(), matrix, true);
//Canvas resizedCanvas = new Canvas(resizedBitmap);
if (bitmap != null) {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
resizedBitmap.compress(Bitmap.CompressFormat.PNG, 100, baos);
Bundle parameters = new Bundle();
byte[] data = baos.toByteArray();
parameters.putByteArray("picture", data);
DataKeeper.getInstance().setBundleToPost(parameters);
}
bitmap.recycle();
它显示 OutOfMemory异常。我知道这是由于imagesize超出了其可用大小。我如何调整图片大小而不会降低其质量?我尝试使用 BitmapFactory.Options 更正此问题。但是不起作用。如何解决这个例外?
此致 阿沙
答案 0 :(得分:0)
使用它:
BitmapFactory.Options options=new BitmapFactory.Options();
options.inSampleSize = 8;
Bitmap preview_bitmap=BitmapFactory.decodeStream(is,null,options);
有关详细信息,请参阅此链接
答案 1 :(得分:0)
@Zaz Gmy的想法是正确的,
但是我认为inSampleSize
的值对于每个图像都不应该是常数(8)。
这当然可行,但在同一比例因子= 8下使用不同分辨率缩放不同图像会导致某些图像质量明显下降。
相反,应根据图片的目标inSimpleSize
和width
生成height
。
Android documentation提供了一篇关于如何处理此问题的好文章。
答案 2 :(得分:0)