Android 如何在没有位图的情况下将位图写入文件。compress方法
我不想使用位图的压缩方法。我只想直接写进sd卡。不想在我的情况下使用压缩。基于标题:这会将URL直接保存到文件中:Android 如何在没有位图的情况下将位图写入文件。compress方法,android,bitmap,android-bitmap,Android,Bitmap,Android Bitmap,我不想使用位图的压缩方法。我只想直接写进sd卡。不想在我的情况下使用压缩。基于标题:这会将URL直接保存到文件中: FileOutputStream output = ctx.openFileOutput(localFileName, context.MODE_PRIVATE); URLConnection openConnection = new URL(url).openConnection(); openConnection.con
FileOutputStream output = ctx.openFileOutput(localFileName, context.MODE_PRIVATE);
URLConnection openConnection = new URL(url).openConnection();
openConnection.connect();
InputStream inputStream = openConnection.getInputStream();
byte[] buffer = new byte[1024];
for (int n = inputStream.read(buffer); n >= 0; n = inputStream.read(buffer))
output.write(buffer, 0, n);
output.flush();
output.close();
inputStream.close();
您可以将openFileOutput更改为存储在SD卡上的新FileOutputStream(新文件(“filepath”))
但是您似乎在使用ImageLoader API时遇到了问题。大多数常见的图像格式都是自然压缩的(例如PNG、JPEG、WebP)。您希望使用什么特定的图像格式?我希望图像本身为PNG格式,但不希望该方法减小其大小或分辨率。将文件另存为原始文件。“不希望方法减小其大小或分辨率”-compress()从不更改分辨率。“将文件另存为原始文件”--由于您没有提供“原始文件”来自何处的演示,并且由于您没有定义“将文件另存为原始文件”的确切含义,这将是任何人都很难帮助你。我从服务器上得到的图像url,我在浏览器中打开它的规格如下:1000*665,它的大小是855kb。我使用imageloader将这个imageurl加载到imageview中,并将位图保存到sd卡中。但当我在android设备中看到图像时,它的规格如下:500*332,大小=142kb。我正在使用这种方法编写位图b.compress(bitmap.CompressFormat.PNG,100,writeStream);最有可能的是,您的“imageloader”正在更改您的图像,例如将其降采样为只显示在
ImageView
中所需的大小。但是,由于您还没有提供详细的说明,因此很难证明这一点。问题不在于compress()
,因为compress()
不会改变位图的分辨率。索引1024是否足以满足任何图像文件大小?buff用于inputStream.read。关于这个数字有很多讨论,但我们通常使用1024或2048。您还可以告诉我如何在不使用压缩方法的情况下将位图(我已经提供)写入文件吗?唯一的方法是将字节数组直接写入磁盘,但由于格式原因,这会使图像无法读取,此解决方案涉及读取每个字节并将其插入流,你也需要自己解码位图。