Articles of 位图

覆盖位图时出现错误android.graphics.Canvas.throwIfRecycled

我试图覆盖使用以下方法在canvas上的图像: private Bitmap overlay(Bitmap bmp1, Bitmap bmp2) { bmOverlay = Bitmap.createBitmap(70, 70, Bitmap.Config.RGB_565); canvas = new Canvas(bmOverlay); canvas.drawBitmap(bmp1, 0, 0, null); //line 179 canvas.drawBitmap(bmp2, 0, 0, null); return bmOverlay; } 但是,我的应用程序不断崩溃,日志读取: java.lang.NullPointerException在android.graphics.Canvas.throwIfRecycled(Canvas.java:954)在android.graphics.Canvas.drawBitmap(Canvas.java:980)在com.MyApp.overlay(MyApp.java:179) 谁能帮忙?

在Android中调整位图大小

我使用下面的代码调整位图大小: FileOutputStream out = new FileOutputStream("/sdcard/mods.png"); Bitmap bmp = Bitmap.createScaledBitmap(pict, (int)(pict.getWidth() / totScale), (int)(pict.getHeight() / totScale), false); bmp.compress(Bitmap.CompressFormat.PNG, 90, out); out.close(); 从我使用的相机获取位图的代码如下: mCamera.takePicture(null, null, null, new Camera.PictureCallback() { @Override public void onPictureTaken(byte[] data, Camera camera) { pict = BitmapFactory.decodeByteArray(data, 0, data.length); } }); 第一张照片是我在手机上看到的(在Astro文件pipe理器中),还有当我在canvas上的应用程序中绘制位图时。 这发生在我testing过的每个设备上(HTC Legend和Galaxy Tab)第二张照片就是我电脑上的样子。 什么导致设备上的块? 解: 这是什么解决了我的问题:而不是 pict = BitmapFactory.decodeByteArray(data, 0, data.length); […]

如何在canvas上裁剪选定区域的位图?

我正在做一个应用程序,我不能一个问题最后三天做谷歌尽可能多。我在canvas上做一个圆圈,并要裁剪图像的那部分,并显示在缩放模式的图像。我的第一步就像在屏幕这里: – 在这里,我selectarea.here是我的代码使用这个。 private float x, y; private boolean zooming = false; private Paint mPaint; private Matrix mmatrix; private Shader mShader; private Bitmap mBitmap; private List<Point> mpoints; private List<MyPoints> mpointlist; private Path mpath; private Canvas mcanvas; private Bitmap mresult_bitmap, resultingImage,finalbitmap; private Context mcontext; private boolean bfirstpoint = false; private Point mfirstpoint = null; private Point […]

在Eclipse中进行debugging时,可以快速查看canvas/位图

有没有办法在Eclipse上debuggingcanvas/位图? 我想知道,如果我可以查看当前的canvas/位图看起来如何在特定的行设置断点。

如何修复位图大小的错误超过虚拟机预算

我正在工作一个应用程序图像上传到SD卡我缩放SD卡保存到数据库有时出现一个错误位图大小超过VM预算 ouput : 01-11 15:39:51.809: ERROR/AndroidRuntime(6214): Uncaught handler: thread main exiting due to uncaught exception 01-11 15:39:51.979: ERROR/AndroidRuntime(6214): java.lang.OutOfMemoryError: bitmap size exceeds VM budget 01-11 15:39:51.979: ERROR/AndroidRuntime(6214): at android.graphics.BitmapFactory.nativeDecodeByteArray(Native Method) 01-11 15:39:51.979: ERROR/AndroidRuntime(6214): at android.graphics.BitmapFactory.decodeByteArray(BitmapFactory.java:384) 01-11 15:39:51.979: ERROR/AndroidRuntime(6214): at android.graphics.BitmapFactory.decodeByteArray(BitmapFactory.java:397) 01-11 15:39:51.979: ERROR/AndroidRuntime(6214): at com.fitzgeraldsoftware.shout.presentationLayer.Shout.onActivityResult(Shout.java:1653) 01-11 15:39:51.979: ERROR/AndroidRuntime(6214): at android.app.Activity.dispatchActivityResult(Activity.java:3624) 01-11 15:39:51.979: ERROR/AndroidRuntime(6214): at android.app.ActivityThread.deliverResults(ActivityThread.java:3220) […]

“Bitmap.createScaledBitmap”是否将32位图像转换为24位?

在我的应用程序中,我这样加载一个32位的图像(ARGB_8888): Bitmap.Config mBitmapConfig; mBitmapConfig = Bitmap.Config.ARGB_8888; BitmapFactory.Options options = new BitmapFactory.Options(); options.inPreferredConfig = mBitmapConfig; mBitmap = BitmapFactory.decodeFile(SourceFileName, options); 然后缩放: mBitmap = Bitmap.createScaledBitmap(mBitmap, iW, iH, true); 如果我使用缩放相同的宽度和高度的原始位图,它是兆字节的大小的一半(我正在观看堆大小)。 缩放后,将值“ARGB_8888”更改为“RGB_565”(24位)会以兆字节为单位给出相同的大小。 有人可以解释这种现象,并可能给我一个build议,如何在32位色彩空间缩放位图? 谢谢!

Android:BitmapFactory.decodeResource返回null

我似乎无法弄清楚这一点。 我有2个具有不同特性的java类,每个调用BitmapFactory.decodeResource来获得相同的图像资源,一个返回位图,而另一个返回null。 两个类都在同一个包中。 这里是工作的类,它调用BitmapFactory.decodeResource返回位图。 我只包括相关的代码。 package advoworks.test; import android.content.Context; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Canvas; import android.graphics.Rect; import android.util.Log; import android.view.Surface; import android.view.SurfaceHolder; import android.view.SurfaceView; public class MainScreen extends SurfaceView implements SurfaceHolder.Callback { private static final String TAG = MainScreen.class.getSimpleName(); public MainScreen(Context context) { super(context); Bitmap bitmap; bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.droid_1); //adding the callback (this) […]

用相机拍照并获取位图

这不是一个复制:我问这个function!!!!没有用户交互!!!! 我正在为Android的应用程序工作,它使用前置摄像头为用户模拟镜像。 我需要应用程序每5秒作为一个位图自动!!!没有用户交互!!!,我喜欢与另一个位图结合后拍照。 对我来说困难的部分:如何拍照并将其作为位图? 我尝试了几个解决scheme,但没有一个是好的。

Android:使用Zxing生成的QR码有边距(不适合该区域)

我正在使用我的应用程序ZXing库来生成QR码。 我想生成适合屏幕宽度的QR码(也许是一些小的填充)。 如果我将屏幕的宽度设置为QR码的宽度大小,我会得到更小的QR码。 看截图(320×240分辨率)。 我想要QR码来适应黑色区域。 为什么QR码红色这么小? 我如何将它拉伸到黑色区域? 我的代码: Display display = getWindowManager().getDefaultDisplay(); Point size = new Point(); display.getSize(size); int width = size.x; Bitmap bm = encodeAsBitmap(mGeneratedURL, BarcodeFormat.QR_CODE, width, width); qrcodeImage.setImageBitmap(bm); 生成QR码: private Bitmap encodeAsBitmap(String contents, BarcodeFormat format, int img_width, int img_height) throws WriterException { String contentsToEncode = contents; if (contentsToEncode == null) { return null; […]

如何将LinearLayout转换为图像?

我尝试了下面的代码将LinearLayout转换为图像: public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); LinearLayout lyt = (LinearLayout) findViewById(R.id.lyt); lyt.setDrawingCacheEnabled(true); lyt.buildDrawingCache(true); Bitmap b = Bitmap.createBitmap(lyt.getDrawingCache()); ImageView img = (ImageView) findViewById(R.id.imageView1); img.setImageBitmap(b); } 但我得到了NullPointerException : Bitmap b = Bitmap.createBitmap(lyt.getDrawingCache()); 布局XML是: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <LinearLayout android:id="@+id/lyt" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" > <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Button 1" /> […]