精华内容
下载资源
问答
  • android中Bitmap图像处理 修改图片大小以及保存时的文件大小

    Options options1 = new Options();
    options1.inJustDecodeBounds = true;  
    BitmapFactory.decodeFile(filePath, options1);  
    options1.inSampleSize = RegisterTool.calculateInSampleSize(options1, 110, 160);  //110,160:转换后的宽和高,具体值会有些出入
    options1.inJustDecodeBounds = false;  
    Bitmap bitmap = BitmapFactory.decodeFile(filePath, options1);       //filePath:文件路径
    
    
    public static int calculateInSampleSize(BitmapFactory.Options options,
    			int reqWidth, int reqHeight) {
    		
    		final int height = options.outHeight;
    		final int width = options.outWidth;
    		int inSampleSize = 1;
    
    		if (height > reqHeight || width > reqWidth) {
    
    			final int heightRatio = Math.round((float) height
    					/ (float) reqHeight);
    			final int widthRatio = Math.round((float) width / (float) reqWidth);
    
    			inSampleSize = heightRatio < widthRatio ? widthRatio : heightRatio;
    		}
    
    		return inSampleSize;
    	}
    
    
    //压缩图片并将Bitmap保存到本地
    FileOutputStream out = new FileOutputStream(new File(filePath));
    saveBitmap.compress(Bitmap.CompressFormat.JPEG, 60, out);   //60代表压缩40%








    展开全文
  • android中图片加载到内存中所占空间大小计算:分辨率 height*width*一个像素所占空间大小  解析:decode时指定解码方式为ARGB_8888 代表用8位表示透明度(A),8位表示红色(R),8位表示绿色(G),8位表示蓝色(B...

    android中图片加载到内存中所占空间大小计算:分辨率 height*width*一个像素所占空间大小 

    解析:decode时指定解码方式为ARGB_8888 代表用8位表示透明度(A),8位表示红色(R),8位表示绿色(G),8位表示蓝色(B),也就是说每个像素占用4*8=32位空间(等于4byte),相对应 RGB_565,一共用16位(2byte)表示一个像素

    举个例子,上述属性图片,加载到程序中 分别占用720*1230*4=3542400byte= 3.38MB(ARGB_8888);720*1230*2=1771200byte=1.67MB(RGB_565)

    光说不行,咱得上代码上图,没图说个**对不对






    代码很简单,bitmap自带getByteCount()方法。

    然后两者的清晰度区别,从上面两张图中还是能看出来有些差别,16位解码出的图片略微有点失真。


    =================================华丽的分割线=================================


    接下来说下bitmap的compress方法。

    compress将bitmap压缩输出到流当中,参数一指定输出的文件类型,参数二0-100指定质量,也决定了压缩后的流大小。

    参数一指定png 参数二就都为100了,不会再打折压缩了,所以要压缩质量,要指定为jpeg,(第三种webp格式没有接触过)

    不知道是不是错觉,指定jpeg情况下,哪怕质量指定100,出来的图片还是感觉跟原图有差距,略微有些失真,所以,需要保持原图效果,还是指定为png格式吧。

    compress方法查看源码,直接调用的是c层代码,跟进c层代码 发现是skia库起的作用,skia中继续调用了libjpeg或者libpng库来处理压缩图片。

    继续上图举例子:


    jpeg 100%情况下 压缩后流大小为299490byte(300k)左右


    jpeg 80%情况下 压缩后流大小为56043byte(56k)左右


    jpeg 50%情况下 压缩后流大小为35443byte(35k)左右


    jpeg 20%情况下 压缩后流大小为24802byte(25k)左右


    可以看到,压缩后图片大小的减少还是非常明显的,不过一般情况下 压缩率在80%以上就OK,继续往下,文件减少的幅度大幅下降,失真度却大幅上升。

    如果还对图片占用大小不满意,那要从图片分辨率方面入手(文章第一部分),而不是继续降低压缩比率。



    展开全文
  • java压缩图片文件大小

    热门讨论 2014-05-14 11:10:20
    java 开发压缩图片文件大小,2m-->200k 不是压缩宽高的
  • 文件中的图片批量处理,设置想要的尺寸大小
  • Python实现Pillow处理图像文件

    千次阅读 2019-12-30 17:09:53
    使用Python图像处理库Pillow处理图像文件,批量图像格式转换、批量调整图片大小、批量创建略所图、批量图像加文字水印、批量图像加图片水印
    
    
    • 使用Python处理实际问题时,往往需要使用由第三方开发的开源Python软件库
    • Pillow位于PyPI中的图像处理库(PIL:Python Image Library),提供了广泛的文件格式转化,强大的图像处理能力(图像存储,图像显示,格式转化以及基本的图像处理操作等)
    • 有关Pillow的信息,可以查阅在线文档https://pillow.readthedocs.org

    使用pip安装Pillow


    我的Python版本:python3.7

    打开cmd,输入

    pip3 install Pillow
    
    1. 查看用pip安装了多少pytho包(及其版本)pip list
    2. pip安装的python包,在python安装路径/Lib/site-packages下

    注意哦:
    Pillow库包含几十个模块,组织在名为PIL的包(可以理解为:文件夹)中

    在这里插入图片描述
    PIL包中有一个模块:Image
    在这里插入图片描述

    PIL.Image提供了一些包括从文件加载图像和创建新图像的函数,其中的Image用来表示图像对象

    打开和显示图像


    from PIL import Image
    
    im = Image.open("D:\zgh\picture\zgh.jpg")  #读入图片
    im.show()  #展示图片
    print(im.format,im.size,im.mode)
    
    • im.format返回包含图像格式的字符串(JPEG、GIF、TIFF、BMP、PNG…)
    • im.size返回包含图像宽度和高度的元组,单位为像素
    • im.mode返回包含图像模式的字符串(RGB、CYMK、Grayscale…)

    运行:

    1. 显示图片
      在这里插入图片描述
    2. 打印图片信息
      在这里插入图片描述

    图像的基本操作


    1. copy()拷贝图像
    2. crop()剪裁图像
    3. paste()将一个图像粘贴(覆盖)在另一个图像上面
    4. resize()用于调整图像大小
    5. rotate()用于旋转和翻转图像
    6. filter()用于图像过滤
    7. new()可以创建一个给定模式和大小的新图像对象

    把一幅图像的4个副本排列成2×2网格;在左上方的副本是原始图像,而画面右上方、左下方、右下方则分别使用模块PIL.ImageFilter中定义的内置过滤器CONTOUR、EMBOSS、FIND_EDGES进行过滤

    我选择操作的图片:
    路径:D:\zgh\picture\zgh.jpg
    在这里插入图片描述

    import sys
    import os
    import PIL.Image
    import PIL.ImageFilter
    
    im = PIL.Image.open(sys.argv[1])
    width,height = im.size
    
    #创建新图像,大小为原始图像的4倍
    newIm = PIL.Image.new(im.mode,(2*width,2*height))
    
    #左上角:原始图像
    newIm.paste(im,(0,0,width,height))
    
    #右上角:轮廓过滤
    contour = im.filter(PIL.ImageFilter.CONTOUR)
    newIm.paste(contour,(width,0,2*width,height))
    
    #左下角:浮雕过滤
    emboss = im.filter(PIL.ImageFilter.EMBOSS)
    newIm.paste(emboss,(0,height,width,2*height))
    
    #右下角:边缘过滤
    edges = im.filter(PIL.ImageFilter.FIND_EDGES)
    newIm.paste(edges,(width,height,2*width,2*height))
    
    #显示结果图像
    newIm.show()
    

    在控制台中输入:
    在这里插入图片描述
    运行结果:
    在这里插入图片描述

    批量图像格式转换


    使用PIL.Image模块的open()函数打开图像文件时,会根据文件内容自动确定文件格式。使用Image对象的save()方法保存图像时,可以指定格式,从而实现格式转换

    1. glob模块可以使用通配符匹配文件名。
      例如:glob.glob( "D:\zgh\desktop\Python\*.jpg")可以返回D:\zgh\desktop\Python下的所有后缀为jpg的文件列表
    2. os.path.splitext()可以拆分文件名和后缀
    import sys
    import glob
    import os
    import PIL.Image
    
    img_path = sys.argv[1] + "/*." +sys.argv[2]
    
    for file in glob.glob(img_path):
        f,s = os.path.splitext(file)
        outfile = f + "." + sys.argv[3]
        PIL.Image.open(file).save(outfile)
    

    在控制台中输入:
    在这里插入图片描述
    运行
    转换后的png文件就在D:\zgh\desktop\Python这个路径下

    批量调整图片大小


    调整图片大小也是网络开发或图像软件预览常用的一种基本技术

    使用Image对象的resize()方法可以调整图像大小

    import sys
    import os
    import glob
    from PIL import Image
    
    img_path = sys.argv[1] + "/*." +sys.argv[2]
    img_width = int(sys.argv[3])
    img_height = int(sys.argv[4])
    
    for file in glob.glob(img_path):
        f,s = os.path.splitext(file)
        outfile = f + "_" + sys.argv[3] + "~" + sys.argv[4] + "." + sys.argv[2]
        img = Image.open(file)
        img_out = img.resize((img_width,img_height))
        img_out.save(outfile)
    

    在控制台输入:
    在这里插入图片描述

    批量创建略所图


    略缩图是网络开发或图像软件预览常用的一种基本技术

    使用Python的Pillow图像库中Image模块中的Image对象的thumbnail()方法,可以很方便的建立略缩图

    import sys
    import os
    import glob
    import PIL.Image
    
    img_path = sys.argv[1] + "/*." +sys.argv[2]
    
    size = (128,128)
    
    for file in glob.glob(img_path):
        f,s = os.path.splitext(file)
        outfile = f + "_tn." + sys.argv[3]
        img = PIL.Image.open(file)
        img.thumbnail(size,PIL.Image.ANTIALIAS)
        img.save(outfile)
    

    在控制台中输入:
    在这里插入图片描述
    运行
    转换后的略缩图文件就在D:\zgh\desktop\Python这个路径下

    批量图像加文字水印


    图片加水印是防止盗版的有效方式之一

    首先使用Python的Pillow图像库中Image模块的new函数可以创建水印图像对象,并使用ImageDraw模块在水印图像上绘制文字,最后通过Image模块的composite函数合成水印图像和原图像

    我在在D:\zgh\desktop\Python这个路径下有四个jpg文件:
    在这里插入图片描述

    import sys
    import os
    import glob
    from PIL import Image,ImageDraw,ImageFont
    
    img_path = sys.argv[1] + "/*." +sys.argv[2]
    
    for file in glob.glob(img_path):
        f,s = os.path.splitext(file)
        outfile = f + "_watermark." + sys.argv[2]
        img = Image.open(file)
        img_watermark = Image.new('RGBA', img.size)
        fnt = ImageFont.truetype("c:/Windows/fonts/Tahoma.ttf", 100)
        draw = ImageDraw.Draw(img_watermark)
        draw.text((0,0), sys.argv[3], font=fnt)
        img_out = Image.composite(img_watermark, img, img_watermark)
        img_out.save(outfile)
    
    

    在控制台输入:
    在这里插入图片描述
    运行结果(以其中一张图片为例:水印在左上角)

    批量图片加图片水印


    加图片水印的原理和加文字水印相同,首先使用Python的Pillow图像库中的Image模块的new函数可以创建水印图像对象,并使用图像对象的paste方法把log图像粘贴到水印图像,最后通过Image模块的composite函数合成水印图像和原图像

    import sys
    import os
    import glob
    from PIL import Image
    
    img_path = sys.argv[1] + "/*." +sys.argv[2]
    
    for file in glob.glob(img_path):
        f,s = os.path.splitext(file)
        outfile = f + "_log." + sys.argv[2]
        img = Image.open(file)
        img_log = Image.open(sys.argv[3])
        img_mark = Image.new('RGBA', img.size)
        img_mark.paste(img_log,(0,0))
        img_out = Image.composite(img_mark, img, img_mark)
        img_out.save(outfile)
    

    在控制台输入:
    在这里插入图片描述

    D:\zgh\desktop\Python路径下的其中一张图片:

    水印图片:

    运行结果:

    展开全文
  • JS获取图片/图像文件大小的代码

    千次阅读 2013-06-05 15:07:13
    JS获取图片/图像文件大小的代码 时间:2013-01-21 12:19来源:未知 作者:ken 点击: 186 次 经测试兼容ie6,ie7,ie8 ,Google Chrome,ff等浏览器都可以用,不过只判断图片文件的大小。 var ImgObj=new ...

    JS获取图片/图像文件大小的代码

    时间:2013-01-21 12:19来源:未知 作者:ken 点击: 186 次

    经测试兼容ie6ie7ie8 Google Chromeff等浏览器都可以用,不过只判断图片文件的大小。
    <script language=javascript>
    var ImgObj=new Image(); //建立一个图像对象
    var AllImgExt=".jpg|.jpeg|.gif|.bmp|.png|"//全部图片格式类型
    var FileObj,ImgFileSize,ImgWidth,ImgHeight,FileExt,ErrMsg,FileMsg,HasCheked,IsImg//全局变量 图片相关属性
    //以下为限制变量
    var AllowExt=".jpg|.gif|.doc|.txt|" //允许上传的文件类型 ?为无限制 每个扩展名后边要加一个"|" 小写字母表示
    //var AllowExt=0
    var AllowImgFileSize=70; //允许上传图片文件的大小 0为无限制 单位:KB
    var AllowImgWidth=500; //允许上传的图片的宽度 ?为无限制 单位:px(像素)
    var AllowImgHeight=500; //允许上传的图片的高度 ?为无限制 单位:px(像素)
    HasChecked=false;
    function CheckProperty(obj) //检测图像属性
    {
    FileObj=obj;
    if(ErrMsg!="") //检测是否为正确的图像文件 返回出错信息并重置
    {
    ShowMsg(ErrMsg,false);
    return false; //返回
    }
    if(ImgObj.readyState!="complete") //如果图像是未加载完成进行循环检测
    {
    setTimeout("CheckProperty(FileObj)",500);
    return false;
    }
    ImgFileSize=Math.round(ImgObj.fileSize/1024*100)/100;//取得图片文件的大小
    ImgWidth=ImgObj.width //取得图片的宽度
    ImgHeight=ImgObj.height; //取得图片的高度  eduyo.com
    FileMsg="\n图片大小:"+ImgWidth+"*"+ImgHeight+"px";
    FileMsg=FileMsg+"\n图片文件大小:"+ImgFileSize+"Kb";
    FileMsg=FileMsg+"\n图片文件扩展名:"+FileExt;
    if(AllowImgWidth!=0&&AllowImgWidth<ImgWidth)
    ErrMsg=ErrMsg+"\n图片宽度超过限制。请上传宽度小于"+AllowImgWidth+"px的文件,当前图片宽度为"+ImgWidth+"px";
    if(AllowImgHeight!=0&&AllowImgHeight<ImgHeight)
    ErrMsg=ErrMsg+"\n图片高度超过限制。请上传高度小于"+AllowImgHeight+"px的文件,当前图片高度为"+ImgHeight+"px";
    if(AllowImgFileSize!=0&&AllowImgFileSize<ImgFileSize)
    ErrMsg=ErrMsg+"\n图片文件大小超过限制。请上传小于"+AllowImgFileSize+"KB的文件,当前文件大小为"+ImgFileSize+"KB";
    if(ErrMsg!="")
    ShowMsg(ErrMsg,false);
    else
    ShowMsg(FileMsg,true);
    }
    ImgObj.οnerrοr=function(){ErrMsg='\n图片格式不正确或者图片已损坏!'}
    function ShowMsg(msg,tf) //显示提示信息 tf=true 显示文件信息 tf=false 显示错误信息 msg-信息内容
    {
    msg=msg.replace("\n","<li>");
    msg=msg.replace(/\n/gi,"<li>");
    if(!tf)
    {
    document.all.UploadButton.disabled=true;
    FileObj.outerHTML=FileObj.outerHTML;
    MsgList.innerHTML=msg;
    HasChecked=false;
    }
    else
    {
    document.all.UploadButton.disabled=false;
    if(IsImg)
    PreviewImg.innerHTML="<img src='"+ImgObj.src+"' width='60' height='60'>"
    else
    PreviewImg.innerHTML="非图片文件";
    MsgList.innerHTML=msg;
    HasChecked=true;
    }
    }
    function CheckExt(obj)
    {
    ErrMsg="";
    FileMsg="";
    FileObj=obj;
    IsImg=false;
    HasChecked=false;
    PreviewImg.innerHTML="预览区";
    if(obj.value=="")return false;
    MsgList.innerHTML="文件信息处理中...";
    document.all.UploadButton.disabled=true;
    FileExt=obj.value.substr(obj.value.lastIndexOf(".")).toLowerCase();
    if(AllowExt!=0&&AllowExt.indexOf(FileExt+"|")==-1) //判断文件类型是否允许上传
    {
    ErrMsg="\n该文件类型不允许上传。请上传 "+AllowExt+" 类型的文件,当前文件类型为"+FileExt;
    ShowMsg(ErrMsg,false);
    return false;
    }
    if(AllImgExt.indexOf(FileExt+"|")!=-1) //如果图片文件,则进行图片信息处理 站长教学网 eduyo.com
    {
    IsImg=true;
    ImgObj.src=obj.value;
    CheckProperty(obj);
    return false;
    }
    else
    {
    FileMsg="\n文件扩展名:"+FileExt;
    ShowMsg(FileMsg,true);
    }
    }
    function SwitchUpType(tf)
    {
    if(tf)
    str='<input type="file" name="file1" οnchange="CheckExt(this)" style="width:180px;">'
    else
    str='<input type="text" name="file1" οnblur="CheckExt(this)" style="width:180px;">'
    document.all.file1.outerHTML=str;
    document.all.UploadButton.disabled=true;
    MsgList.innerHTML="";
    }
    </script>
    <form enctype="multipart/form-data" method="POST" οnsubmit="return HasChecked;">
    <fieldset style="width: 372; height: 60;padding:2px;">
    <legend><font color="#FF0000">图片来源</font></legend>
    <input type="radio" name="radio1" checked οnclick="SwitchUpType(true);">本地<input type="radio" name="radio1" οnclick="SwitchUpType(false);">远程:<input type="file" name="file1" οnchange="CheckExt(this)" style="width:180px;"> <input type="submit" id="UploadButton" value="开始上传" disabled>
    <div style="border:1 solid #808080;background:#E0E0E0;width100%;height:20px;color:#606060;padding:5px;">
    <table border="0"><tr><td width="60" id="PreviewImg">预览区</td><td id="MsgList" valign="top"></td></tr></table>
    </div>
    </fieldset>
    </form>


    转载:http://www.eduyo.com/web/javascript/874.html

    展开全文
  • 在做博客系统的修改个人信息的功能的时候, 需要做修改用户头像的功能. 这时候需要用到SpringMVC的... 我们还可以在这个解析器中指定最大文件大小. 第一步: 在spring-mvc.xml文件中注册文件上传解析器 为了能够让Spr
  • Matlab 处理avi视频文件为单帧任意大小图片
  • 基于google的开源图片处理框架,文件中包含一个jar包和一个demo文件,将jar包导入到自己的项目中后,对上传的图片能够判断大小,能够对图片进行压缩放大,调整大小等,针对图片大小和格式、旋转方向等能够实现...
  • 给定某文件“test1.abc”,有两部分组成,第一部分是文件头,具体大小、格式不确定,第二部分是一个51*512大小图像,存储类型为“float”型。已知文件的第一部分和第二部分依次存放,除此再无其他信息,请编程读取...
  • python有一个图像处理库——PIL,可以处理图像文件。PIL提供了功能丰富的方法,比如格式转换、旋转、裁剪、改变尺寸、像素处理图片合并等等等等,非常强大。 首先需要安装这个图像处理库。 举个简单的例子,调整...
  • Matlab函数 imfinfo 可以获取图像文件的文件名、文件格式、图像大小、图像类型、数据类型等信息 imfinfo 函数返回结构数组基本都包含这九个结构成员: 结构数组成员名 所代表含义 Filename 文件名称 ...
  • 开发中会有用户头像上传的需求,为了节省流量,一般上传接口都会现在图片大小,比如1M。但是随着手机像素越来越高,这个限制很容易达到,所以需要客户端在上传图片进行压缩操作。 先说一下思路:主要是等比缩小图片...
  • OpenCV批量更改图片文件大小与名称

    千次阅读 2014-12-22 15:16:28
    问题来源:给导师打工做图像处理,用手机拍了很多原始图片,无奈图片是以拍摄时间命名的,而且像素很高(2000+ * 2000+),计算机处理很慢,于是乎请教师兄,师兄让我用Windows自带的画图软件更改大小,改了2张,觉得...
  • 20KB 50KB 100KB等,这样对我们图像处理来说就有些不知所措了,现在教您如何不影响尺寸和图片质量的情况下压缩jpg图片文件大小,并且失真降到最低,图片效果更好。首先 我们用一张靓女图片为例来教大家如何无损压缩...
  • 有的人说ffmpeg,但是它好像非常复杂而且怎么制定文件大小我也没有搜出来,下面说说我的方法。 操作 $ sudo apt install imagemagick $ sudo apt install jpegoptim $ convert hello.png hello.jpeg $ jpegoptim --...
  • 摘要 最近需要对WSI图像进行处理,以前没弄过,所以整理下方法。 环境:Ubuntu 18.04 LTS, Python 3.7, pyvips 数据: [TCGA-GBM (Survival Prediction)] 本文主要参考以下两个博客: ...安装pyvip
  • 对于处理文件还不太熟或者不知二进制文件与普通文件有啥区别可以参考: https://blog.csdn.net/xdc1812547560/article/details/107860396 https://blog.csdn.net/xdc1812547560/article/details/107866953 读取 要...
  • node处理图片和PDF文件方法

    千次阅读 2019-10-06 23:07:51
    本文主要讲述了node处理图片和pdf文件的npm包。处理图片的如sharp,images,处理pdf的如phantom、wkhtmltopdf、html-pdf、html2pdf-node,可以将html转为pdf。而gm可以处理图片和pdf以及二者转换,但需要借助第三方...
  • js 判断上传文件大小

    千次阅读 2013-11-13 14:06:33
    我们在做文件上传时,为了实现异步上传的效果,一般会选择采用iframe的形式来进行文件的上传,但我们不能像ajax那样对服务端返回的数据进行处理,从而来进行文件大小以及文件样式的判断,所以我们一般也会想到使用js...
  • Springboot上传文件大小限制解决

    千次阅读 2019-11-07 23:00:13
    Springboot上传文件大小限制解决 问题产生:最近在做一个Excel表格导入的功能,发现当上传的文件大于1MB的时候前端会报400错误,后端日志显示一个坏的请求(Springboot2.0版本); 原因分析:通过上传文件的对比...
  • 随便打开一张图片,或者新建画布,这个怎么都行 新建动作,给动作改名字(这个为了方便观察其实没啥用),如下图,点击记录即可开始记录。 记录开始后,不要乱操作,先点击图像选项,选择图像大小(快捷键ALT+...
  • 图像处理1——生成PPM文件

    千次阅读 2013-09-23 01:33:37
    PPM文件是一种图像文件,其结构简单,适合用于菜鸟学习图像处理的原理。 PPM文件主要是由两部分组成,头部分和数据部分。 头部信息一般如下: Px :P是固定字符,x是一个整数,一般x=5表示黑白图片,x=6表示彩色图片...
  • PHP html前端上传图像文件处理

    千次阅读 2018-11-02 22:48:34
    PHP html上传图像文件处理 PHP: if(($_FILES['img']['error']) == 0){ //判断name为img是否选中文件上传 //判断文件类型是否是图片 if($_FILES['img']['type']=="image/png" || $_FILES['img']['type...
  • 头文件的内容由制作图像的公司规定,一般包括文件类型、制作时间,文件大小制作人及版本号等信息。文件制作时还涉及到图像的压缩和存储效率等。 这里主要介绍BMP文件格式,GIF文件格式,JPEG文件格式和TIFF文件格式...
  • 图像编码处理图像转为一个三维矩阵,并使用三维矩阵形成一个图像: import tensorflow as tf import matplotlib.pyplot as plt# 读取原始图像数据 image_raw_data = tf.gfile.FastGFile("/tensorflow_google/cat...
  • 显示原始图像和调整大小后的图像。 figure;imshow(RGB) figure;imshow(RGB2) 整理好运行的效果如图: 前提需要先能够了解到图像的基本信息,可以使用imfinfo函数,调用: imfinfo - 有关图形文件的信息, 此 ...
  • 本文拿windows系统举例,先看几张图: 图1 文件大小比占用空间小 ...上面3张图展示了文件大小与占用空间的大小几种情况,前两种场景是比较常见的情况,之所以有时文件大小会比占用空间小...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 365,601
精华内容 146,240
关键字:

怎样处理图片文件大小