Android:复制和粘贴图像不起作用!

时间:2010-12-04 05:36:16

标签: android image

我想从asstets文件夹中复制一张图片并将其粘贴到我的包中,仅供测试。但最终图像没有显示任何内容。当我想用paint打开图片时,它会说“这不是一个有效的位图文件”。

在我的程序中,我开始以这种方式阅读原始图像:

private void copyImage()
{
    AssetManager am = getResources().getAssets();               
    try{
        image = BitmapFactory.decodeStream(am.open("tasnim.png"));
        imWidth  = image.getWidth();
        imHeight = image.getHeight();
    } 
    catch(IOException e){
        e.printStackTrace();
        System.out.println("Error accoured!");
    }
}

接下来,我将获得图像像素或提取像素,并将像素保存为整数数组(rgbstream)。

private void getPixelsOfImage()
{
    rgbStream = new int[imWidth * imHeight];
    image.getPixels(rgbStream, 0, imWidth, 0, 0, imWidth, imHeight);
}

最后,我想将它保存在我的包中,

private void createPicture()
{
    contextPath = context.getFilesDir().getAbsolutePath();
    String path = contextPath + "/" + picName;

    try{
        FileOutputStream fos = new FileOutputStream(path);
        DataOutputStream dos = new DataOutputStream(fos); 

        for(int i=0; i<rgbStream.length; i++)
            dos.writeByte(rgbStream[i]);

        dos.flush();
        dos.close();
        fos.close();
    }
    catch(IOException e){
        System.out.println("IOException : " + e);
    }
    System.out.println("Picture Created.");
}

代码工作正常,但结果,没有! :( 当我检查DDMS时,它会创建新文件并存储所有像素(因为它显示此文件的大小为13300,原始图片的尺寸为100 * 133)。当我点击“从设备中提取文件”时,我可以将其保存在桌面上。但是,当我打开它:)没有。

你怎么想?我的代码有什么问题吗? 感谢

1 个答案:

答案 0 :(得分:1)

我不知道你的意图是什么 - 你想写出原始图像文件吗?

假设您想要编写JPEG或PNG或其他内容,您可以删除整个代码并执行更轻松的操作:

Bitmap image = BitmapFactory.decodeStream(am.open("tasnim.png"));
FileOutputStream fos = new FileOutputStream(path);
image.compress(Bitmap.CompressFormat.PNG, 100, fos);

当然要进行适当的错误检查。