Android 转换为位图崩溃

13 浏览
0 Comments

Android 转换为位图崩溃

我应该制作一个安卓应用程序,但出于某种原因,我无法将我的图片转换为位图图像。这是一个.png图像,但当我在我的代码中尝试转换它时,我的应用程序就会崩溃,没有错误代码或其他任何提示。我已经尝试多次修复,但我并不擅长编程,我需要帮助,它就是不起作用。\n每当我到达位图foto部分时,我的应用程序就会崩溃,没有任何错误信息。\n我的URI硬编码是因为我认为URI.fromfile给我错误的URI,所以我想确保一下。现在它只是崩溃了,我不知道我的代码有什么问题。有人可以帮助我吗?

0
0 Comments

问题原因:在Android中将图像转换为位图时,可能会导致应用程序崩溃。这可能是由于错误的图像处理操作或代码逻辑错误引起的。

解决方法:根据提供的代码片段,以下是可能的解决方法:

1. 确保在将图像转换为位图之前,确保图像已正确加载并赋值给变量image。

2. 确保在获取图像时,通过使用正确的Uri和上下文来调用`android.provider.MediaStore.Images.Media.getBitmap(getContentResolver(), intent.getData())`方法。

3. 确保在获取图像路径时,使用正确的上下文和Uri来调用`getRealPathFromURI(context, intent.getData())`方法。

4. 确保在调用`scaleImage(imageView, path)`方法之前,已正确实现该方法,并且传递的参数imageView和path是有效的。

5. 确保在调用`compress()`方法之前,已正确实现了image对象,并且传递的参数Bitmap.CompressFormat.PNG, 100, stream是有效的。

通过检查和确保以上步骤的正确实现,可以解决Android中将图像转换为位图时可能出现的崩溃问题。

0
0 Comments

问题出现的原因是从文件加载图像的方式不正确。解决方法是使用正确的方式加载图像,并确保路径正确。另外,如果加载的图像过大,可能会导致内存不足的崩溃。解决这个问题的方法是使用Bitmaps来显示屏幕上的内容,并限制图像的分辨率。此外,还需要检查是否有异步任务在后台运行,并且是否引发了致命异常。在Eclipse的LogCat视图中可以查看有关崩溃错误的详细信息。另外,还需要注意在非UI线程中调用UI相关的操作,例如Toast提示,在非UI线程调用这些操作会导致崩溃。根据错误信息中的提示,可以查看代码的具体行数来定位错误的原因。

0
0 Comments

Android中将图像转换为位图时出现崩溃的问题是由于以下原因引起的:没有定义THUMBNAIL_SIZE变量。

解决方法是定义THUMBNAIL_SIZE变量,并给它赋予所需的缩略图大小值。可以根据需求设置缩略图的大小。

以下是一个解决方法示例:

public static Bitmap getThumbnail(Uri uri) throws FileNotFoundException, IOException{
    int THUMBNAIL_SIZE = 100; // 设置缩略图大小
    InputStream input = this.getContentResolver().openInputStream(uri);
    BitmapFactory.Options onlyBoundsOptions = new BitmapFactory.Options();
    onlyBoundsOptions.inJustDecodeBounds = true;
    onlyBoundsOptions.inDither=true;//optional
    onlyBoundsOptions.inPreferredConfig=Bitmap.Config.ARGB_8888;//optional
    BitmapFactory.decodeStream(input, null, onlyBoundsOptions);
    input.close();
    if ((onlyBoundsOptions.outWidth == -1) || (onlyBoundsOptions.outHeight == -1))
        return null;
    int originalSize = (onlyBoundsOptions.outHeight > onlyBoundsOptions.outWidth) ? onlyBoundsOptions.outHeight : onlyBoundsOptions.outWidth;
    double ratio = (originalSize > THUMBNAIL_SIZE) ? (originalSize / THUMBNAIL_SIZE) : 1.0;
    BitmapFactory.Options bitmapOptions = new BitmapFactory.Options();
    bitmapOptions.inSampleSize = getPowerOfTwoForSampleRatio(ratio);
    bitmapOptions.inDither=true;//optional
    bitmapOptions.inPreferredConfig=Bitmap.Config.ARGB_8888;//optional
    input = this.getContentResolver().openInputStream(uri);
    Bitmap bitmap = BitmapFactory.decodeStream(input, null, bitmapOptions);
    input.close();
    return bitmap;
}
private static int getPowerOfTwoForSampleRatio(double ratio){
    int k = Integer.highestOneBit((int)Math.floor(ratio));
    if(k==0) return 1;
    else return k;
}

通过使用上述代码,可以成功将Uri转换为位图,避免了崩溃问题的出现。在代码中,设置了合适的缩略图大小,并通过THUMBNAIL_SIZE变量进行控制。

0