图片二次采样


        /**
         * java.lang.OutOfMemoryError内存溢出的异常 ...OOM=OutOfMemoryError
         *
         * 当我们加载一张很大的图片 的时候可能会出现内存溢出,,,处理这张大图片...二次采样
         *
         * 二次采样就是为了避免图片加载时的OOM异常
         *
         * 参考博客:http://blog.csdn.net/u012702547/article/details/51245133
         *
         * 第一次采样我主要是想要获得图片的压缩比例
         *
         * 第二次采样是加载图片的缩略图
         */
        //imageView.setImageResource(R.drawable.aaa);

        Bitmap bitMap = getBitMap(Environment.getExternalStorageDirectory() + "/aaa.jpg", 320, 480);

        imageView.setImageBitmap(bitMap);


    }

    /**
     * 这个方法是二次采样的方法
     * @param path 图片的路径
     * @param width 图片要显示的宽度
     * @param height 图片要显示的高度
     * @return 返回值是bitmap
     */
    private Bitmap getBitMap(String path,int width,int height){

        //1.第一次采样不加载整张图片,,,只加载边框
        //从文件解码一个图片
        BitmapFactory.Options options = new BitmapFactory.Options();
        //设置只加载边框
        options.inJustDecodeBounds = true;
        BitmapFactory.decodeFile(path,options);

        //获取大图片的宽度和高度
        int outWidth = options.outWidth;
        int outHeight = options.outHeight;

        //计算宽度和高度显示的比例
        int x = outWidth / width;
        int y = outHeight / height;

        //这是压缩的比例
        int simpleSize = 1;

        if (x>y && y>1){
            simpleSize = x;
        }else if (y>x && x>1){
            simpleSize = y;
        }

        //........到这个位置计算出压缩的比例,,,完成第一次采样

        //第二次采样是加载图片的缩略图

        options.inJustDecodeBounds = false;//不在只加载边框,,,要加载整个图片的像素点
        options.inSampleSize = simpleSize;//指定加载图片的压缩比例
        options.inPreferredConfig = Bitmap.Config.RGB_565;//设置图片的加载模式...565在内存中一个像素占2字节,,8888一个像素占4个字节
        //Bitmap.Config.ALPHA_8;
        //Bitmap.Config.ARGB_4444;
        //Bitmap.Config.ARGB_8888

        return BitmapFactory.decodeFile(path,options);//以...选项去解码图片文件,,,返回值是bitmap
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: QCustomPlot 是一个基于Qt框架的图表绘制库,可以用于实现各种静态和动态的数据可视化。QCustomPlot的二次开发指的是在QCustomPlot的基础上进行定制化的开发,以满足特定的需求。 QCustomPlot提供了丰富的功能和灵活的接口,可以轻松地绘制各种类型的图表,如曲线图、柱状图、散点图等。它还支持自定义图表的外观和交互行为,包括调整坐标轴、添加标题和子标题、设置图表背景、绘制网格线等。 QCustomPlot的二次开发可以通过以下几个方面来实现。首先,可以根据项目要求自定义图表的外观,如修改颜色、线型和符号的样式,以及添加背景图片和阴影效果。其次,可以添加交互功能,如鼠标悬停提示、数据选择和缩放等,以提供更好的用户体验。 此外,QCustomPlot还支持动态更新图表,可以实时显示数据的变化情况。在二次开发中,可以利用这个功能实现实时数据的监控和展示。例如,在工业控制系统中,可以通过QCustomPlot将传感器数据可视化,实时呈现设备状态和变化趋势。 QCustomPlot还可以与Qt中的其他模块和类进行整合,以实现更复杂的功能。例如,可以使用Qt的网络模块从远程服务器获取数据,然后通过QCustomPlot进行绘制和展示。 综上所述,QCustomPlot的二次开发可以根据具体需求来增加、修改和定制图表的功能和外观,以实现更多样化和个性化的数据可视化效果。 ### 回答2: QCustomPlot是一个开源的Qt绘图库,它提供了一系列的绘图工具和功能,包括曲线绘制、图表绘制、坐标系设置等。在QCustomPlot中进行二次开发,可以根据自己的需求进行定制和扩展,增加特定的功能和样式。 QCustomPlot的二次开发可以从以下几个方面入手: 1. 数据源:可以通过二次开发,将不同的数据源与QCustomPlot结合起来。比如,可以从数据库、网络或其他文件中读取数据,并进行绘图展示。也可以通过实时数据更新的方式,将实时数据显示在曲线或图表上。 2. 绘图样式:QCustomPlot提供了一些默认的样式,但二次开发可以通过自定义样式来增加个性化的图表展示。可以调整线条的颜色、粗细、曲线的类型,修改图表的背景、坐标轴的标签、刻度等。 3. 交互功能:可以通过二次开发,添加一些交互式的功能。例如,可以实现放大缩小、平移、拖拽等操作,以便用户在绘图上进行交互。也可以添加工具栏、菜单等界面元素,提供更多的操作选项。 4. 数据处理:可以通过二次开发,在QCustomPlot上进行数据处理和分析。例如,可以对绘图数据进行滤波、平滑、峰值检测等操作,以便更好地展示和分析数据。 5. 导出和保存:可以通过二次开发,增加数据导出和保存的功能。可以将绘制的图表保存为图片,或者导出数据为文件,以方便用户进行后续的处理和使用。 通过以上的二次开发,可以根据具体需求定制化QCustomPlot,使其更加符合自己的项目要求。需要注意的是,在二次开发过程中,需要具备Qt和绘图相关的知识和经验,以便更好地理解和使用QCustomPlot库。 ### 回答3: QCustomPlot是一个非常强大的开源绘图库,可以用于绘制二维图形和图表。通过二次开发,我们可以根据自己的需求对其进行定制和扩展。 QCustomPlot的二次开发可以包括以下几个方面的内容: 1. 绘图定制:通过修改绘图函数、调整绘图参数等方式,可以实现各种各样的绘图效果。例如,可以改变线条颜色、线型、点的形状,添加背景图像或标签等。 2. 数据处理:可以通过二次开发,对绘图数据进行处理和分析。例如,可以实现数据滤波、数据采样、数据拟合等功能,从而在绘图时展示更加准确和精细的数据。 3. 交互功能:可以通过二次开发,添加交互式的功能,使用户能够与绘图进行互动。例如,可以添加鼠标拖动、缩放、平移等功能,使用户可以自由浏览和操作图形。 4. 扩展功能:QCustomPlot还可以通过二次开发,集成其他相关功能。例如,可以与其他界面库结合,实现更加丰富的用户界面;也可以与数据存储库结合,实现数据的保存和读取功能等。 总之,QCustomPlot的二次开发可以根据具体需求进行定制和扩展,从而实现更加个性化和强大的绘图功能。无论是改变绘图样式、处理数据、添加交互功能,还是集成其他功能,QCustomPlot都可以通过二次开发来实现。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值