实际上我正在开发一个应用程序,我的要求就像我必须根据用户选择将大尺寸图像缩放到某个预定义的大小。例如,假设我有一个1Mb的图像,用户选择它将其转换为大小为100kb的图像,然后我必须将该图像调整为100kb。 有一天我试图用Bitmap API来实现这一点,但我无法达到用户想要的确切大小。有时它非常大,有时非常小。所以,如果有人知道如何将android中的图像调整为精确大小(根据用户选择而改变)。 请帮我解决这个问题。
答案 0 :(得分:2)
如果只有文件大小很重要,您将需要使用不使用压缩的图像文件格式。您应该能够拍摄具有宽度,高度,位深度等属性的图像,并计算此图像的预期文件大小。
因此,使用这样的文件格式,您可以从原始图像开始,然后
文件大小=宽x高x位深度+元数据/开销。
我假设您还想保持原始宽高比。在这种情况下,您可以从当前文件大小中找出文件大小减少百分比,并将宽度和高度乘以相同的%。使用位图图像处理API缩放图像,然后保存。它应该接近您要查找的文件大小。
特定于Android Bitmap api,您可以使用getByteCount()来确定图像当前占用的字节数。您还可以使用getConfig()来确定每个像素的字节数。
因此,您的最终目标文件大小转换为字节除以每个像素的字节数,为您提供允许的像素数。允许的像素数除以当前图像中的像素数将为您提供缩放系数。使用缩放系数并缩放图像以保持当前的宽高比,您应该有一个位图,其像素数接近您的目标。然后保存为不使用压缩的文件格式。