精华内容
下载资源
问答
  • 怎样处理图片文件大小
    2021-08-12 03:28:47

    上传的图像文件需要生成几种不同的尺寸,用在不同的地方。之前我们用 Jimp.read() 方法读取了上传的图像文件,返回的东西是个 Jimp 实例,它上面会有一些方法可以处理图像文件,比如调整大小,加水印,旋转,裁切等等。

    command + P,搜索 file service,打开 file.service 文件。在文件的顶部导入 Node.js 自带的 path ,来自 path。再导入 Jimp 来自 jimp 这个包。

    再找个地方定义一个调整图像尺寸的功能,名字可以是 imageResizer ,给它设置两个参数,一个是 image,类型是 Jimp,一个是 file,类型是 Express.Multer.File 。

    在这个函数的主体里面,先准备一下图像尺寸, 从 image里的 _exif 里面,把 imageSize 解构出来。

    然后准备一下文件的路径,添加一个 filePath,这个路径可以使用 path.join() 方法组织一个,第一部分是 file 里的 destination ,就是存储文件的目录,这里应该是 uploads 这个目录,再加上一部分是 resized ,因为我希望把调整大小的图像文件放到这个 uploads/resized 目录的下面。后面再加上文件的名字,file 里的 filename 。

    下面我们就可以调整图像的大小了,要把图像调整成几种不同的尺寸,可以先做一个判断,检查一下图像的宽度,是不是大于 1280 像素。如果是的话我们就用一下 image 上的 resize 这个方法调整一下图像文件的大小。宽度设置成 1280,高度可以自动调整,用一个 Jimp.Auto。

    接着调用 quality 调整图像的质量,设置成 85,再用 write 把处理的结果写入到一个文件。这里设置一下文件的路径,用一个字符模板,filePath ,加上小横线,large。

    复制一份这段代码,再调整一个中等尺寸的图像,判断的条件是检查图像文件的宽度是不是大于 640, 如果是的话,就把图像的宽度调整成 640 像素,高度自动。 修改一下写入的文件,加上一个 medium 后缀。

    再复制一份, 再生成一个图像的缩略图,判断的条件是宽度大于 320,调整的大小宽度是 320,高度自动。 写入的文件的名字里面加上一个 thumbnail 后缀。

    打开 file.middleware ,找到 fileProcessor 这个中间件,修改一下它。在它里面可以用一下刚才定义的 imageResizer 这个功能,使用它的时候要提供一个 image,它的值就是用 Jimp.read() 读取图像文件以后得到的东西。

    还有一个 file,这里就是 request.file,它的值是上传的文件相关的信息。 编辑器自动帮我们从 file.service 里面导入了这个 imageResizer 。

    在 HTTP 客户端,打开 上传文件 请求,配置以后,发送一下这个请求。 在项目所在目录的下面,打开 uploads ,里面存放的就是从客户端那里上传过来的文件,这里还有一个 resized 目录,它里面存放的就是调整了大小之后生成的一些图像文件。

    刚才在客户端上传的照片以后,服务端额外生成了三个不同尺寸的照片文件,就是 large,medium 还有 thumbnail 。

    更多相关内容
  • 灰度图像伪彩色处理的方法,matlab编写,一共包括6种方法,可用
  • 主要介绍了JS获取文件大小的方法,结合实例总结分析了JavaScript获取文件大小的常用技巧,并给出了判断文件格式与大小的完整实例供读者参考,需要的朋友可以参考下
  • imImageSize缩小图片文件到设置大小,以方便上传图片文件大小的限制。 比如限制为2M之类的。 小工具而已,简单到崩溃。 一般人用不到,但极其偶尔或许会用到,也或许不适合在这里分享,随意就好。 无聊时,支持吐槽....
  • Light Image Resizer能批量调整图片大小工具,图片批量添加水印,批量转换图像格式、调整图片大小、缩放裁剪,图片格式转换、重命名,排序;添加效果,旋转,自定义元数据,优化压缩图片,移除图片背景。
  • 灰度图像伪彩色处理,灰度图像伪彩色处理文件大小有变化吗,matlab源码
  • 基于google的开源图片处理框架,文件中包含一个jar包和一个demo文件,将jar包导入到自己的项目中后,对上传的图片能够判断大小,能够对图片进行压缩放大,调整大小等,针对图片大小和格式、旋转方向等能够实现...
  • //判断照片大小 function getPhotoSize(obj){ photoExt=obj.value.substr(obj.value.lastIndexOf(".")).toLowerCase();//获得文件后缀名 if(photoExt!='.jpg'){ alert("请上传后缀名为jpg的照片!"); ...
  • 如图,有一张这样的图片,我们需要对它进行压缩: 处理前该图片的像素尺寸和文件大小如图所示: 接着我们使用PS打开该图片,如果不想改变尺寸大小,只改变文件大小。点击菜单【文件】->【存储为web和设备所用格式(D)...

    如图,有一张这样的图片,我们需要对它进行压缩:
    在这里插入图片描述
    处理前该图片的像素尺寸和文件大小如图所示:
    在这里插入图片描述

    在这里插入图片描述
    接着我们使用PS打开该图片,如果不想改变尺寸大小,只改变文件大小。点击菜单【文件】->【存储为web和设备所用格式(D)…】

    在这里插入图片描述
    进入到图片压缩优化界面,如红框里,选择jpeg格式,然后调节”品质“,数字越小,文件大小越小,在最左边可以看到实时的保存后文件的大小,调节到符合自己要求为止。
    在这里插入图片描述
    保存好文件,这时候看文件的信息,发现文件的尺寸还是:1920*1312,大小是:301kb,已经压缩2/3了。

    展开全文
  • 通过运行脚本,可以有效缩减ps文件大小,亲测有效。
  • 有的PSD文件明明没什么图层,却又几个G大,真正原因是因为 PS 在操作过程当中,文档中保存了历史图像多余的操作数据,这可能是某个 PS 版本的 Bug。该资源可以删除ps内多余的信息,使文档回到健康状态。
  • el-upload限制文件大小(图片尺寸)

    千次阅读 2022-04-25 14:36:18
    isLt2M) { this.$refs.upload.clearFiles() this.$message({ message: '上传文件大小不能超过 50MB!', type: 'warning' }) return false } this.fileName = file.name } 3.作为补充, 如果对图片的尺寸有限制也可以...

    1. 在el-upload控件中加入on-change方法:

    <el-upload id="file"
      ref="upload"
      slot="append"
      :action="file.action"
      :with-credentials="true"
      name="file"
      :data="file.data"
      :show-file-list="false"
      accept=".xls,.xlsx,.csv"
      :disabled="isDisabled"
      :auto-upload="false"
      :on-change="handleChangeFile">
      <el-button class="file_upload"
        type="default"></el-button>
      <label for="file"
        class="file-btn h-icon-folder"></label>
    </el-upload>

    2. 在on-change方法中处理:

    handleChangeFile (file, fileList) {
      this.isDisabled = false
      if (!file) return
      var testmsg = file.name.substring(file.name.lastIndexOf('.') + 1)
      const isLt2M = file.size / 1024 / 1024 < 50
      if (testmsg !== 'xls' && testmsg !== 'xlsx' && testmsg !== 'csv') {
        this.$refs.upload.clearFiles()
        this.$message({
          message: '上传文件只能是 .xls、.xlsx、csv格式!',
          type: 'warning'
        })
        return false
      }
      if (!isLt2M) {
        this.$refs.upload.clearFiles()
        this.$message({
          message: '上传文件大小不能超过 50MB!',
          type: 'warning'
        })
        return false
      }
      this.fileName = file.name
    }

    3.作为补充, 如果对图片的尺寸有限制也可以实现的(这里只做补充, 此文件中没用到):

    // 说明: 这部分代码不是本项目的,扩展
    onchange (file) {
      let isLt = file.size / 1024 < 200 // 判断是否小于200Kb
      if (!isLt) {
        this.$message.warning('图片大小不能超过200KB! 请重新上传')
        this.$refs.upload.clearFiles()
        this.basicForm.image = ''
        this.basicForm.imageFile = []
      } else {
        this.asyncImgChecked(file).then(data => {
          if (data) {
            this.basicForm.image = file.name
            this.basicForm.imageFile = file
          } else {
            this.basicForm.image = ''
            this.basicForm.imageFile = []
            this.$refs.upload.clearFiles()
            this.$message.warning('图片尺寸不小于64 X 64')
          }
        })
      }
    },
    // 计算图片尺寸
    asyncImgChecked (file) {
      return new Promise((resolve) => {
        let reader = new FileReader()
        reader.readAsDataURL(file.raw) // 必须用file.raw
        reader.onload = () => { // 让页面中的img标签的src指向读取的路径
          let img = new Image()
          img.src = reader.result
          // console.log(`1当前文件尺寸大小:${img.width}×${img.height}`)
          if (img.complete) { // 如果存在浏览器缓存中
            if (img.width < 64 || img.height < 64) {
              resolve(false)
            } else {
              resolve(true)
            }
          } else {
            img.onload = () => {
              if (img.width < 64 || img.height < 64) {
                resolve(false)
              } else {
                resolve(true)
              }
            }
          }
        }
      })
    }

    展开全文
  • java图片处理 根据大小获取指定大小图片 以及图片尺寸处理 等等java图片处理 根据大小获取指定大小图片 以及图片尺寸处理 等等java图片处理 根据大小获取指定大小图片 以及图片尺寸处理 等等java图片处理 根据大小...
  • Python调整图片文件大小

    千次阅读 2021-06-30 17:47:32
    减小文件大小通过PIL模块压缩图片,增加文件大小通过给图片附加数据

    问题描述

    Python调整图片文件的占用空间大小,而不是分辨率

    1.jpg
    1.jpg
    图片大小为 8KB




    减小文件大小

    使用 PIL 模块

    pip install Pillow
    

    1. 减小图片质量

    代码

    import os
    from PIL import Image
    
    
    def compress_under_size(imagefile, targetfile, targetsize):
        """压缩图片尺寸直到某一尺寸
    
        :param imagefile: 原图路径
        :param targetfile: 保存图片路径
        :param targetsize: 目标大小,单位byte
        """
        currentsize = os.path.getsize(imagefile)
        for quality in range(99, 0, -1):  # 压缩质量递减
            if currentsize > targetsize:
                image = Image.open(imagefile)
                image.save(targetfile, optimize=True, quality=quality)
                currentsize = os.path.getsize(targetfile)
    
    
    if __name__ == '__main__':
        imagefile = '1.jpg'  # 图片路径
        targetfile = 'result.jpg'  # 目标图片路径
        targetsize = 2 * 1024  # 目标图片大小
        compress_under_size(imagefile, targetfile, targetsize)  # 将图片压缩到2KB
    

    效果

    注意!无法实现图片无限压缩,若文件太小,辨识度也会大大降低




    2. 减小图片尺寸

    import os
    from PIL import Image
    
    
    def image_compress(filename, savename, targetsize):
        """图像压缩
    
        :param filename: 原图路径
        :param savename: 保存图片路径
        :param targetsize: 目标大小,单位为byte
        """
        image = Image.open(filename)
        size = os.path.getsize(filename)
        if size <= targetsize:
            return
        width, height = image.size
        num = (targetsize / size) ** 0.5
        width, height = round(width * num), round(height * num)
        image.resize((width, height)).save(savename)
    
    
    if __name__ == '__main__':
        filename = '1.jpg'
        savename = 'result.jpg'
        targetsize = 2 * 1024
        image_compress(filename, savename, targetsize)
    

    效果




    增加文件大小

    Windows

    通过 subprocess 模块调用系统命令 fsutil file createnew filename filesize 创建指定大小的文件

    再用 copy/b 命令合并数据到图片上

    import os
    import time
    import subprocess
    
    imagefile = '1.jpg'  # 图片路径
    targetfile = 'result.jpg'  # 目标图片路径
    targetsize = 10 * 1024 * 1024  # 目标图片大小
    
    tempfile = str(int(time.time()))  # 临时文件路径
    tempsize = str(targetsize - os.path.getsize(imagefile))  # 临时文件大小
    subprocess.run(['fsutil', 'file', 'createnew', tempfile, tempsize])  # 创建临时文件
    subprocess.run(['copy/b', '{}/b+{}/b'.format(imagefile, tempfile), targetfile], shell=True)  # 合并生成新图片
    os.remove(tempfile)
    

    Linux

    通过 subprocess 模块调用系统命令 fallocate -l filesize filename 创建指定大小的文件

    再用 cat > 命令合并数据到图片上

    import os
    import time
    import subprocess
    
    imagefile = '1.jpg'  # 图片路径
    targetfile = 'result.jpg'  # 目标图片路径
    targetsize = 10 * 1024 * 1024  # 目标图片大小
    
    tempfile = str(int(time.time()))  # 临时文件路径
    tempsize = str(targetsize - os.path.getsize(imagefile))  # 临时文件大小
    subprocess.run(['fallocate', '-l', tempsize, tempfile])  # 创建临时文件
    subprocess.run('cat {} {} > {}'.format(imagefile, tempfile, targetfile), shell=True)  # 合并生成新图片
    os.remove(tempfile)
    

    效果

    图片的分辨率没变




    封装

    import os
    import time
    import platform
    import subprocess
    from PIL import Image
    
    
    def resize_picture_filesize(imagefile, targetfile, targetsize):
        """调整图片文件大小
    
        :param imagefile: 原图路径
        :param targetfile: 保存图片路径
        :param targetsize: 目标文件大小,单位byte
        """
        currentsize = os.path.getsize(imagefile)  # 原图文件大小
    
        if currentsize > targetsize:  # 需要缩小
            for quality in range(99, 0, -1):  # 压缩质量递减
                if currentsize > targetsize:
                    image = Image.open(imagefile)
                    image.save(targetfile, optimize=True, quality=quality)
                    currentsize = os.path.getsize(targetfile)
        else:  # 需要放大
            system = platform.system()
            tempfile = str(int(time.time()))  # 临时文件路径
            tempsize = str(targetsize - os.path.getsize(imagefile))  # 临时文件大小
    
            if system == 'Windows':
                subprocess.run(['fsutil', 'file', 'createnew', tempfile, tempsize])  # 创建临时文件
                subprocess.run(['copy/b', '{}/b+{}/b'.format(imagefile, tempfile), targetfile], shell=True)  # 合并生成新图片
            elif system == 'Linux':
                subprocess.run(['fallocate', '-l', tempsize, tempfile])  # 创建临时文件
                subprocess.run('cat {} {} > {}'.format(imagefile, tempfile, targetfile), shell=True)  # 合并生成新图片
            os.remove(tempfile)
    
    
    if __name__ == '__main__':
        imagefile = '1.jpg'  # 8KB的图片
        resize_picture_filesize(imagefile, 'reduce.jpg', 2 * 1024)  # 缩小到2KB
        resize_picture_filesize(imagefile, 'increase.jpg', 800 * 1024)  # 放大到800KB
    




    参考文献

    1. Python批量直接修改图片存储大小脚本
    2. How do I install PythonMagick for Python 3.5
    3. PythonMagick GitHub
    4. ImageMagick Documentation
    5. DOS Command: COPY
    6. python给png图片写入无用数据从而改变其md5
    7. Create a File of Specific Size in Windows 10
    8. How To Create Files Of A Certain Size In Linux
    9. Python执行系统命令
    10. How can I copy several binary files into one file on a Linux system?
    11. How to compress a picture less than a limit file size using python PIL library?
    展开全文
  • 批量更改图片文件大小原码 含示例及源码,可直接运行使用!
  • SSM处理文件上传大小超出限制问题

    千次阅读 2020-09-23 16:19:29
    在做博客系统的修改个人信息的功能的时候, 需要做修改用户头像的功能. 这时候需要用到SpringMVC的... 我们还可以在这个解析器中指定最大文件大小. 第一步: 在spring-mvc.xml文件中注册文件上传解析器 为了能够让Spr
  • 使用Pillow库处理图像文件

    千次阅读 2022-03-15 20:19:40
    本案例使用图像处理库Pillow中的模块、对象来处理图像:实现读取图像、获取图像信息、调整图像大小、旋转图像、平滑图像、剪切图像等基本图像处理任务。 实验环境 Pycharm、Anaconda 案例研究 3.1 安装Pillow ...
  • 图像处理基础知识——图片存储形式、色域、图片文件格式 1.图片存储形式 对于任意一幕我们人眼看到的图像,在用相机镜头拍摄下来后,他就不再是我们人眼见到的图像了,而是在计算机内部的处理下形成了一个矩阵,一整...
  • 对比文件大小,可以发现颜色类别和位深度都可以影响文件大小,但位深度的影响更加直接 对比几个bmp文件的文件头,可以发现都有前两个字节都是BM,作用是告诉其他要使用的软件这是bmp文件,而2-4位则是文件的大小,a...
  • 这是一个文件上传和图片处理类,可以置上传文件大小,重命名方式代表以时间命名,允许上传的文件扩展名,检查上传文件,创建目录,对图片进行生成缩略图,打水印等操作 ,默认编码为UTF8 ,需要GD库支持,取得水印...
  • 2、资料太多需要做同样的操作处理(包括修改文件名和修改图片尺寸)。 一、修改文件名 import cv2 import os from PIL import Image import xlrd import requests import logging ''' 将图片设定为指定尺寸,...
  • android中图片加载到内存中所占空间大小计算:分辨率 height*width*一个像素所占空间大小  解析:decode时指定解码方式为ARGB_8888 代表用8位表示透明度(A),8位表示红色(R),8位表示绿色(G),8位表示蓝色(B...
  • 文件批量处理百宝箱能够对 图片大小缩尺寸,按指定大小或尺寸压缩图片图片转灰度,MP3标签信息的显示与重写,给图片添加竖向/倒向/任意角度文字或图片水印,对图片进行相对/绝对、区域、按大小、缩略缩放、分切...
  • 说实话,第一眼看到这个问题,我被震住了,心想到底是什么的勇气能让题主竟然用base64编码来处理文件,这岂不自寻烦恼,所以对于这个问题,我的建议不是该如何解决base64编码的大小问题,而是要换一种方式来存储...
  • vue-cli 图片打包成base64的大小限制配置文件件 vue.config.js
  • 有时候在使用的图片的时候会遇到图片尺寸过大的情况,遇到这种情况的时候一些新手小白是不是比较迷茫不知道该如何...(注:压缩等级越小,压缩后图片文件越小。)完成后点击“开始处理”。 3、图片处理完成后,点击
  • Android图像调整大小并保留EXIF数据(方向,旋转等)如果您的Android应用使用设备相机拍摄照片然后调整大小(这是非常常见的做法,可以减小上传大小),那么您可能不会意识到此调整大小操作会剥离Exif元数据。...
  • 现在很多网络上传图片应为量大,要求上传图存储大小不超过1M,那么怎么大批量处理图片存储大小呢。
  • @PostMapping(value = "/uploadDriverImage")public JsonResVo uploadDriverImage(@RequestParam("file") MultipartFile file) {try {//检查文件是否为空if(file.isEmpty()) {return JsonResVo.buildErrorResult...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 434,144
精华内容 173,657
关键字:

怎样处理图片文件大小