如何在上传到android中的服务器之前压缩GIF图像?

问题描述 投票:0回答:2

如何在将GIF图片上传到服务器之前对其进行压缩?我尝试了一些Android库来压缩GIF图片,但它会将其转换为png图片。有什么办法可以压缩gif图像?

android compression gif
2个回答
0
投票

我在项目中使用位图。

Bitmap

示例代码:

 ImageView carView = (ImageView) v.findViewById(R.id.imagen_cr7);

                        byte[] decodedString = Base64.decode(picture, Base64.NO_WRAP);
                        InputStream input=new ByteArrayInputStream(decodedString);
                        Bitmap ext_pic = BitmapFactory.decodeStream(input);
                        carView.setImageBitmap(ext_pic);

0
投票

GIF是lossless图像压缩格式:它被设置为精确地再现图像。因此,没有“图像质量”滑块(如JPEG编码器中);尽管GIF可能比未压缩的格式小得多(例如许多相机RAW或常见的TIFF选项),但它可以走多远是有限制的。

此外,您应该知道GIF限制为每个像素8位。如果您的源图像是完整的24位,则必须进行抖动处理以适合256项调色板。因此,尽管GIF格式本身是无损的,但首先使用它所需要的图像处理可能是有损的。

您可以采取许多措施来减小图像文件的大小;您应该使用哪种图像取决于您所拥有的图像种类以及要使用的图像种类:

  • 您可以选择有损格式(例如JPEG),这将允许更大的压缩率。请注意,JPEG在类似照片的图像上效果很好,但在线条艺术上效果不佳。另外,(尽管您的评论明确拒绝了)PNG可能是一个合理的选择。
  • 如评论中所述,您可以尝试降低图像的分辨率,并发送缩小的版本。这在类似照片的图像上也更好用,但是有专门用于处理线条的非线性滤镜可用。
  • 如果您的应用程序必须使用全分辨率GIF,则可以生成可通过GIF格式更压缩的图像。 GIF可以很好地压缩纯色块-但对抖动或嘈杂的图像效果不佳(例如,将24 bpp图像转换为GIF格式可能会得到效果)。

由于您没有提供有关需求的任何信息(您拥有什么样的图像,在哪里得到的以及需要什么,因此很难提出具体建议。

但是,您的GIF很有可能比特定应用需要的分辨率要高得多(导致选择#2。

© www.soinside.com 2019 - 2024. All rights reserved.