`
daniel_tu
  • 浏览: 184240 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Android中进行图像压缩和缩放

 
阅读更多

这里将的是只使用 Android 中自带的库进行简单的图像缩放和压缩, 如果对图像处理有更多要求的话, 建议使用其他的库, 这里使用自带库进行操作适合图片处理没不是主要逻辑的项目, 简单的只是想缩小或压缩图片.

压缩图片

这里简单的将一个图片文件转换为 Bitmap ,并且在转换的过程中对图片质量进行简单压缩:

bitmap.compress(Bitmap.CompressFormat.JPEG, int quality, FileOutputStream fos);

注意这里的 quality 的范围为 0~100 ,经过测试如果这个值设置比较低的话图片会非常不清晰, 基本不可用, 0~100 的值可以参考类似Photoshop之类输出图片时选择的图片质量.

此方法只是单纯对图片质量进行处理, 并不会改变其大小, 如果需要改变图片文件的大小, 最好是使用缩放, 这个可以在保证一定的图片清晰度的情况下减少了图片大小, 毕竟手机屏幕就那么点, 你把 2000px * 1000px 的图片改为 500px * 250px 在手机用户看来也不会有太严重的不适感, 而如果你只设置图片的 quality 想来改变文件大小, 你最后会发现得到的是一个 2000px * 1000px 的几个色块.

缩放图片

先提代码看看:

  /**
     * 保持长宽比缩小Bitmap
     *
     * @param bitmap
     * @param maxWidth
     * @param maxHeight
     * @return
     */
    public Bitmap resizeBitmap(Bitmap bitmap, int maxWidth, int maxHeight) {

        int originWidth  = bitmap.getWidth();
        int originHeight = bitmap.getHeight();

        // no need to resize
        if (originWidth < maxWidth && originHeight < maxHeight) {
            return bitmap;
        }

        int width  = originWidth;
        int height = originHeight;

        // 若图片过宽, 则保持长宽比缩放图片
        if (originWidth > maxWidth) {
            width = maxWidth;

            double i = originWidth * 1.0 / maxWidth;
            height = (int) Math.floor(originHeight / i);

            bitmap = Bitmap.createScaledBitmap(bitmap, width, height, false);
        }

        // 若图片过长, 则从上端截取
        if (height > maxHeight) {
            height = maxHeight;
            bitmap = Bitmap.createBitmap(bitmap, 0, 0, width, height);
        }

//        Log.i(TAG, width + " width");
//        Log.i(TAG, height + " height");

        return bitmap;
    }

这里演示是将图片缩小到一个max范围内, 而不是直接将变成硬性的变成某个尺寸的图片, 因为一般来说这种设置max的方式符合大部分需要, 如果必须将图片变成某个指定尺寸可以直接使用 Bitmap.createScaledBitmap 方法, 也是下面要介绍的.

此函数主要就是使用了 Bitmap 的两个静态方法, 一个是:

public static Bitmap createScaledBitmap (Bitmap src, int dstWidth, int dstHeight, boolean filter)

此方法就会把一个 Bitmap 图片 缩放 成指定的尺寸.

剪切图片

而这里还使用到了另一个方法:

public static Bitmap createBitmap (Bitmap source, int x, int y, int width, int height)

此处使用该方法的目的是 剪切 图片, 就是只取图片的某个区域, 从而达到 剪切 图片的效果.

分享到:
评论

相关推荐

    Android 图片压缩Demo

    为了提高代码效率和性能,还可以考虑使用Android提供的`PurgeableBitmap`或第三方库如Glide、Picasso等,它们内置了图片压缩和缓存机制。此外,理解Android的内存管理机制和合理的图片加载策略也是优化图片处理的...

    Android-用于android的Imageview缩放库

    在Android开发中,图片的加载和展示是一项常见且重要的任务,特别是在用户界面设计中,ImageView组件经常被用来显示各种图像资源。然而,简单的ImageView在处理大图或需要交互式缩放时可能会遇到性能问题,因此,...

    Android图片质量压缩

    在Android开发中,图片处理是一项常见且重要的任务,特别是在上传图片到服务器或者在移动设备上存储和显示时,为了节省存储空间和网络传输时间,通常需要对图片进行压缩。本篇将详细介绍Android平台上的图片质量压缩...

    Android下的图片压缩及图片和视频的上传

    本文将深入探讨Android环境下如何实现图片压缩以及如何将压缩后的图片和视频上传到服务器。 一、图片压缩 1. 图片压缩原理: 图片压缩的基本思路是减少图片的数据量,而不会显著降低其视觉质量。这通常通过降低...

    Android图片缩放动画Demo

    在Android开发中,图片的缩放与动画效果是常见的需求,尤其在社交应用如QQ、微信和新浪微博中,用户在浏览图片时会遇到从缩略图平滑过渡到原图的功能。这个"Android图片缩放动画Demo"正是为了实现这样的功能而设计的...

    android 图片压缩 demo

    综上所述,"android 图片压缩 demo"项目主要涉及到Android平台上的图片压缩技术,包括调整图片尺寸、计算合适的缩放比例、选择合适的图像配置以及控制压缩质量。这些技术对于优化应用性能,尤其是减少内存占用和提高...

    Android图片压缩源代码

    在Android开发中,图片压缩是一项常见的需求,尤其是在处理用户拍照或从相册选取图片时,为了节省存储空间、提高应用性能以及减少网络传输的数据量,通常需要对图片进行压缩。本资源提供了一个基于Eclipse的Android...

    Android 使用libyuv对 yuv数据进行缩放,旋转,镜像,裁剪等操作

    在Android平台上,处理图像数据是常见的任务,尤其是在多媒体应用中,如视频播放、拍照和编辑。libyuv是一个跨平台的库,专为处理YUV(YCbCr)格式的视频帧而设计,广泛用于Android系统。这个库提供了丰富的功能,...

    android 分享微信小程序+压缩图片优化

    综上所述,实现Android应用中的微信分享功能,包括微信小程序、图片分享,需要掌握微信SDK的使用,理解分享消息对象的构建,以及图片压缩技术。在处理图片分享时,为了确保分享的成功率,需要对图片进行合适的压缩...

    android图片压缩的完整的解决方案

    在Android开发中,图片压缩是一项常见的需求,尤其是在处理用户上传、下载或者显示大量图片的应用中。为了优化性能和节省存储空间,对图片进行适当的压缩至关重要。这篇博客“android图片压缩的完整的解决方案”提供...

    android图片压缩的处理.zip

    在Android开发中,图片压缩是一项常见的任务,尤其在优化应用性能和减少内存占用时显得尤为重要。这个"android图片压缩的处理.zip"文件很可能是包含了一些示例代码或库,用于帮助开发者了解和实现Android平台上的...

    Android图片缩放方法

    代码示例中展示了这一过程,使用`Bitmap.CompressFormat.PNG`格式和100%的质量因子进行压缩和保存。 通过以上介绍,我们不仅了解了Android中图片缩放的基本原理和实践方法,还掌握了如何生成固定大小缩略图以及将...

    Android高效压缩图片不失真的方法总结

    在Android开发中,图片压缩是一项常见的任务,尤其在移动设备上,为了节省存储空间和提高应用性能,高效压缩图片而不失真是必要的。本篇文章将详细总结Android中实现这一目标的方法和策略。 首先,理解图片压缩的...

    Android实现图片单点旋转缩放保存-仿百度魔图

    在Android平台上,实现图片的单点旋转和缩放并保存是一项常见的需求,尤其在开发图像编辑应用时。本文将深入探讨如何实现这个功能,模仿百度魔图的效果。 首先,我们需要理解Android中的ImageView组件。ImageView是...

    图片压缩节约内存

    在IT行业中,图片压缩是一个非常重要的技术,尤其是在内存管理和移动应用开发中。标题"图片压缩节约内存"直接指向了这个核心目标:通过压缩图片来减少应用程序对内存的占用,从而提高性能并避免内存溢出的问题。这在...

    android 图片 动态缩放

    在缩放过程中,我们需要注意保持图片的原始宽高比,以避免拉伸或压缩图像。 同时,为了实时更新视图,我们需要在`onDraw`方法中绘制缩放后的图片。`Canvas`对象提供了`drawBitmap()`方法,我们可以使用这个方法将...

    android listview下拉图片缩放+加载更多

    在Android中,图片的缩放通常涉及到ImageView组件和其属性。例如,可以使用`android:scaleType`属性来设置图片的缩放模式,如`centerCrop`(保持宽高比填充ImageView)、`fitCenter`(保持宽高比居中显示)或`...

    Android图片压缩(质量压缩和尺寸压缩)

    在Android开发中,图片压缩是一项重要的任务,尤其是在处理用户上传的照片或者显示大量图片的应用中。本文将详细讨论Android图片的两种主要压缩方式:质量压缩和尺寸压缩,以及这两种方法的原理和实现。 **质量压缩...

    android安卓app图片压缩技术,一张将近3M的图片经过压缩后容量减小到186K,压缩效率达到16倍.zip

    本文将深入探讨如何有效地进行Android图片压缩技术,以优化应用性能和用户体验。 首先,我们需要理解Android系统对图片处理的基本原理。Android支持多种图片格式,如JPEG、PNG、WebP等。每种格式都有其特定的压缩...

    android缩放图片代码实例

    Android中的图片缩放主要涉及到两个关键概念:`Bitmap`对象和` BitmapFactory`类。`Bitmap`是Android系统中用于存储像素数据的类,而`BitmapFactory`则提供了从各种源(如文件、资源或网络)解析图片到`Bitmap`的...

Global site tag (gtag.js) - Google Analytics