Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将位图保存到文件_Java_Android_Android Image - Fatal编程技术网

Java 将位图保存到文件

Java 将位图保存到文件,java,android,android-image,Java,Android,Android Image,我想从“资源”文件夹中打开一个图像,调整其大小并重新保存图像。我使用以下代码: private void resizeImage(float ratio) { AssetManager assetManager = getAssets(); InputStream stream = null; try { stream = assetManager.open("bear.png"); } catch (IOException e) {

我想从“资源”文件夹中打开一个图像,调整其大小并重新保存图像。我使用以下代码:

private void resizeImage(float ratio) {
    AssetManager assetManager = getAssets();
    InputStream stream = null;
    try {
        stream = assetManager.open("bear.png");
    } catch (IOException e) {
        return;
    }
    Bitmap bitmapOrg = BitmapFactory.decodeStream(stream);

    int width = bitmapOrg.getWidth();
    int height = bitmapOrg.getHeight();

    float scaleWidth = ((float) width) / ratio;
    float scaleHeight = ((float) height) / ratio;

    Matrix aMatrix = new Matrix();
    aMatrix.setSkew(scaleWidth, scaleHeight);

    bitmapOrg = Bitmap.createBitmap(bitmapOrg, 0, 0, bitmapOrg.getWidth(),
            bitmapOrg.getHeight(), aMatrix, false);

}
但当我启动应用程序时,它崩溃了。这是堆栈跟踪:

12-09 02:36:33.750: ERROR/AndroidRuntime(1939):     at android.graphics.Bitmap.nativeCreate(Native Method)
12-09 02:36:33.750: ERROR/AndroidRuntime(1939):     at android.graphics.Bitmap.createBitmap(Bitmap.java:477)
12-09 02:36:33.750: ERROR/AndroidRuntime(1939):     at android.graphics.Bitmap.createBitmap(Bitmap.java:444)

有人知道为什么会崩溃吗?

资产文件夹位于APK内部,因此在文件系统中不是真正的文件夹。
我不认为你能在那里保存任何东西。

只是想一想。。。如果将最后一行替换为:final Bitmap newBitmap=Bitmap.createBitmap(bitmapOrg,0,0,bitmapOrg.getWidth(),bitmapOrg.getHeight(),aMatrix,false);仍然有同样的痕迹