2018棋牌游戏h5源码,使用 opencv 将图片h5房卡斗牛棋牌平台出售压缩到指定文件尺寸

    图像压缩被广泛使用,如H5房卡斗牛士平台生成,H5房卡斗牛士平台销售缩略图。OW将图片压缩到指定大小,其中大小指生成的图像文件的大小。
    我使用opencv进行图像处理,所以我想直接使用opencv进行图像压缩处理,opencv本身包含压缩到指定像素大小的方法,但是发现很多方法不能压缩到指定文件大小,所以我在思考之后写了这个方法。使用Python语言。
    首先,opencv例程使用opencv不需要多说,已经做过图像处理的人应该知道这种库,我将介绍一些常用的方法。
    1.1安装OpenCV,首先安装Python,推荐Python 3,然后执行:
    PIP安装OpenCV-Python 1.2通过引入OpenCV包来读取图像:
    导入CV2作为CV,然后阅读图片:
    图像=CV。路径(路径)是图像路径,图像是图像数据,是一个数字。ndarray对象实际上是一个数组,Opencv目前支持几乎所有形式的图像(参见http:/blog.csdn.netmars_.olei..78890971)。
    1.3保存图片代码:
    简历。imwrite(path,image)其中路径是保存的文件路径,图像是读取或处理的图像数据,opencv根据文件的后缀名称来写入不同格式的图像数据,因此必须正确地写入后缀名称。
    2。图像压缩2.1传统的压缩opencv支持传统的压缩,它可以将图像压缩到指定的像素大小或比例。
    压缩到指定的像素大小:NexIyMase= CV。调整大小(图像,大小),其中大小是表示压缩图像宽度的二维元组。
    刻度:NexyIMAGE=CV。调整大小(图像,无,FX,FY),其中FX,FY表示图片被压缩在宽和高的方向上。
    2.2对指定文档大小的压缩是基于以上内容的。让我们检查如何实现压缩到指定的文档大小。
    首先,我们需要读取原始文档的大小,计算原始文档的大小和压缩目标值的比率,因为我们想要实现宽高比的压缩,所以它的根号表示为单向压缩比,调用Pro中的Section 2.1。部分压缩。理论上,效果可以达到一次,但是因为图像本身被压缩,所以它可能不能达到期望的一次,只要压缩图像重复这个步骤直到期望的为止。
    2.2.1读取文档大小DEFGETHOXDOCYSIZE(PATH):尝试:Stase= OS。路径。get size(路径)返回get_mb_size(大小),除了Exception为err:print(err)def get_mb_size(字节):bytes=float(字节)MB=bytes1024/1024return MB get_doc_size函数返回MB中图片的文档大小。
    2.2.2删除文件DEF DeleTeX文件(PATH):如果文件存在(路径):OS。删除(路径):打印(没有这样的文件:%s路径)DEF文件存在(路径):返回操作系统。路径。存在s(路径),因为我们需要删除在压缩期间生成的中间文件,因此需要调用delete_file方法来删除它。
    2.2.3压缩大小= GETXDOCYSIZE(PATH)DeleTeEX文件(ResiZePATH),而大小GT;文件大小:率=数学。CEIL((大小/文件大小)10) / 10 + 0.1率=数学。sqrt(rate)rate=1.0/rate(如果file_.)(.ze_path):.ze_rate(.ze_path,.ze_path,rate,rate).:.ze_rate(path,.ze_path,rate,rate)size=get_doc_size(.ze_path),其中file size表示压缩的目标值,path表示原始文件路径,._pathze_path表示压缩的存储路径,.ze_rate表示上述缩放压缩方法,定义如下:
    DEF ResiZeAffice(路径,ResiZePiess PATH,FX,FY):图像= Read图像(路径)IMA-Resisith= CV。调整大小(图像,无,FX=FX,FY=FY)DeleTeX文件(ResiZePATH)SaveImage(路径,图像):CV。IM(路径,图像)DEF Read图像(PATH):CV。IM(路径),当然,为了更好的效果,我做了一些优化。
    首先,当我得到压缩比时,我做了以下操作:
    速率=数学。ceil((sizefiles.)*10)/10+0.1理论应该直接返回到sizefiles.,但是为了在实际测试过程中加速收敛,我使用上面的方法,先将一个十进制数乘以10作为它的向上整数,以便表示精度的提高。保留到原始值的第一个小数位数,即小数位数。如果它是3.14,它将得到32,然后将结果除以10,即3.2,所以最终的结果是将小数秒向上移动,最后加上0.1以更快地收敛,当然可以删除。
    实际测试表明,通过两次重复执行可以获得理想的压缩效果,并且结果值与理想压缩大小几乎相同。
    三。结论简要介绍了如何使用OpenCV压缩图片到指定的文件大小。当然,您可以选择其他的文件处理库来代替opencv,这可以基于用户自己的兴趣,还可以优化最终的循环算法以实现更好的结果,或者更快的收敛。

猜你喜欢

转载自www.cnblogs.com/h5qipaiyuanma/p/9780343.html