我想从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)。当我点击“从设备中提取文件”时,我可以将其保存在桌面上。但是,当我打开它:)没有。
你怎么想?我的代码有什么问题吗? 感谢答案 0 :(得分:1)
我不知道你的意图是什么 - 你想写出原始图像文件吗?
假设您想要编写JPEG或PNG或其他内容,您可以删除整个代码并执行更轻松的操作:
Bitmap image = BitmapFactory.decodeStream(am.open("tasnim.png"));
FileOutputStream fos = new FileOutputStream(path);
image.compress(Bitmap.CompressFormat.PNG, 100, fos);
当然要进行适当的错误检查。