Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >PicSizer-将图片压缩到指定大小(KB)的软件

PicSizer-将图片压缩到指定大小(KB)的软件

作者头像
DearXuan
发布于 2022-01-19 10:58:54
发布于 2022-01-19 10:58:54
1.6K0
举报

为什么要开发这个程序?

我在制作随机壁纸API时,需要将大量图片压缩到指定尺寸和指定大小,但是现有的软件都是根据画质来压缩图片的,大图片在压缩之后仍然很大,而小图片越压缩越模糊。所以我一直都是使用Photoshop一张一张将图片压缩到200KB以下。当时只有几十张壁纸,而最近下载了一个包含4500张图片的压缩包,不可能再手动压缩了,因此萌发想法制作一个可以把图片压缩到指定KB的压缩软件

项目介绍

PicSizer是一款图片批量压缩软件,解决了传统压缩软件只能指定压缩比,而不能指定压缩后的大小的问题。

使用截图

下载与使用

PicSizer发行版

https://gitee.com/dearxuan/pic-sizer/releases

适用场合

编写PicSizer的最初目的是用来制作网页图片,因为网页图片需要尽可能占用更少的带宽,盲目使用画质作为唯一标准来压缩图片的后果是大图片压缩后仍然较大,而小图片越压缩越模糊。PicSizer可以在尽可能保证图片质量的情况下,将图片压缩到指定的大小,例如200KB。对大图片降低画质,对小图片仅转码而不改变画质,可以满足大部分需求。

功能说明

批量增删图片

PicSizer支持每次打开同一目录下的图片文件,并将生成的图片保存至指定目录。如果指定的目录不存在,会自动生成;如果目录中已经有文件,则同名文件将会被直接替换而不事先警告。

增加图片时会自动将地址与列表中的地址比对,如果已存在,则会跳过,并在添加完成后提示有几张图片被跳过。

使用 SHIFT 或 CTRL 来辅助多选,可以批量删除列表中的图片。

支持多种格式

PicSizer支持的格式有 *.jpg , *.png , *.bmp , *.tiff

尺寸修正

PicSizer可以把图片按比例缩放(也可以选择不缩放),但是不支持破坏原图的比例。修正共有3种模式: 无修正,不小于限定值, 不大于限定值。

无修正

将图片按照原图尺寸输出。

不小于限定值

在保持宽度和高度不小于给定值的情况下,尽可能按比例缩小图片。例如,给定 400×300 的尺寸,而图片的尺寸为 800×800 ,则修正后的尺寸为 400×400。

如果图片的宽或高已经小于给定尺寸,则图片不会被修正。

不大于限定值

在保持宽度和高度不大于给定值的情况下,尽可能按比例放大图片。例如,给定 400×300 的尺寸,而图片的尺寸为 100×100 ,则修正后的尺寸为 300×300。

如果图片的宽或高已经大于给定尺寸,则图片不会被修正。

压缩方式

指定画质

PicSizer将画质划分为101个等级,从 0 到 100,数字越小表示画质越低。

对同一张图来说,画质通常和压缩率成正比,即画质越低,压缩率越低,图片越小。但是对不同图片来说,相同的画质可能会有不同的压缩率。

大图片在压缩后仍然可能占用较大空间,小图片虽然画质已经很低,但是仍然会被压缩,导致画质更低。

指定大小

在尽可能确保图片质量的情况下,将图片压缩到不超过指定大小的大小。

例如,限定大小为200KB,则压缩后的图片可能是200KB,也可能是196KB。PicSizer通过二分查找的方法,在所有画质中寻找符合条件的最高画质,因此你不必担心图片画质过低。

命名方式

命名方式可以决定输出后的图片文件名。注意命名和后缀是分开考虑的,例如图片原名为 pic.png,选择的命名方式为“原名”,但是指定格式为“TIFF”,则最终输出的文件名是 “pic.tiff”。

数字

使用数字来命名输出后的文件,如 1.jpg, 2.jpg …… n.jpg

你可以指定下标的起始位置,如果其中一张图片生成失败,则下标不会增加。

例如,在生成 1.jpg 后,第二张图片生成失败,则第三张图片将会被,命名成 2.jpg。

原名

使用原名来命名文件名,注意原名不包括后缀,你可以只修改后缀而不修改原名。

混合方式

混合方式提供了自定义的方法来决定文件名,文件名将会使用你指定的字符串来生成,但是字符串其中必须存在 “{0}” ,它将会被替换成数字,你可以修改它的起始下标。

例如,指定字符串为 “a0{0}a1”,指定起始下标为 -5,则生成的文件名将会是 “a0-5a1.jpg”,“a0-4a1.jpg”……“a04a1.jpg”,“a05a1.jpg”。

如果出现了多个“{0}”,则所有的“{0}”都会被替换掉。

注意不要使用不能作为文件名的字符,例如“\”,否则将会生成失败。

异常处理

目前PicSizer不提供自定义处理异常的方式,遇到异常时,将会被跳过,且下标不会增加,也不会提示具体哪个文件出错。只会在压缩完成后提示生成失败的图片个数。

后序计划

  • 自定义文件名
  • 允许强制修正尺寸
  • 动态添加和删除文件或文件夹
  • 完善异常提示信息
  • 自定义遇到异常时的处理方式
  • 对生成后的图片做简易的图形处理(例如:变暗)
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021年12月6日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
深入浅出 Sketch 插件开发
本文结合工程化实践,系统介绍要实现一个生产级别的 Sketch 插件所需要的技术知识和解决方案,并以一个真实的业务场景为案例,从0到1来实现一个生产级别的插件开发。 从 Sketch 插件开发的机制,自动打包更新工程化、Sketch 中 Objective-C 的运行机制等方面,分享开发一个生产级插件所需的技术储备。 最终开发一个如下图所示的 MVP插件将文章中讲到的知识串联起来,学以致用,加深对 Sketch 插件开发的理解。 在开发前,为了使开发调试更顺畅,需要做一点配置工作。 一、开发环境配置 崩溃
腾讯云设计中心
2022/05/05
1.6K0
深入浅出 Sketch 插件开发
手把手教你写一个sketch插件
sketch是一款轻量、易用的矢量设计工具。尽管如此,在使用过程中有些功能还是未能满足,亦或者在设计或开发流程中有些工作还略显繁琐,所幸sketch有提供API供我们开发一些插件来解决使用过程中遇到的问题。本着能用工具解决就用工具解决的懒癌患者原则,我们这个课程就来学习如何开发sketch 插件。
陆陆
2019/12/05
2.2K1
携程机票Sketch插件开发实践
Sketch 是伴随移动应用程序崛起而流行的 UI 设计工具。2014年 Sketch V3 增加 Symbols 功能,在 UI 设计工具领域的优势越来越大。它持续改进和增强功能,不断加强对插件社区的建设,吸引越来越多的开发者进入。
携程技术
2019/06/21
1.5K0
积木Sketch插件进阶开发指南
前段时间,美团外卖技术团队积木Sketch插件“意外走红”。为了帮助更多的设计师小哥哥、小姐姐落地设计规范,提升产研效率,积木Sketch团队开始着手打造一个平台化的产品。本文介绍了积木Sketch插件进阶开发指南。希望通过本篇内容的学习,大家可以知道如何真正实现一款可以与业务强关联且功能可定制的成熟工具。
美团技术团队
2020/11/11
1.5K0
Sketch 插件开发官方文档合集插件基础您的第一个插件开发环境调试ActionAPI发布插件插件捆绑插件,脚本和命令插件位置更多关于CocoaScriptSketchTool参考资源
我们努力使Sketch成为梦想中的“设计师工具箱”。但是每个人都有不同的需求,也许你需要一个我们还没有实现的功能。不要担心:插件已经可以满足您的需求,或者您可以轻松创建一个插件。 如果您有兴趣扩展Sketch,那么您就位于正确的位置。在这里,我们展示Sketch可扩展性文档的概要以及如何快速构建您的第一个Sketch插件。 如果您只想使用现有的插件,请参阅插件目录。 你可以用插件做什么? Sketch中的插件可以做任何用户可以做的事情(甚至更多!)。例如: 根据复杂的规则选择文档中的图层 操作图层属性 创建
iOSDevLog
2018/05/17
6.5K0
积木Sketch Plugin:设计同学的贴心搭档
多年来,美团外卖一直在高速增长,但整个客户端的UI组件一直没有得到很好的统一。而在开发过程中因UI缺乏同一的标准导致各种问题凸显,积木插件Sketch Plugin应运而生。外卖技术团队将其打造成为UI一致性的抓手,最终帮助团队减少开发成本,提升了交付的质量,并为美团多个业务团队提供了很好的支持服务。
美团技术团队
2020/06/01
1.3K0
积木Sketch Plugin:设计同学的贴心搭档
设计师编程指南之Sketch插件开发 10 - skpm & webview
往期文章索引: 1 / 入门基本概念、page的相关操作 2 / artboard 、NSFileManager 和 NSString 关于文件及文件夹的相关操作 3 / DIY一个Sketch插件,生成猫猫狗狗的全家福 4 / NSPasteboard 、text 的操作 5/ Shape 的一些操作,主要介绍 line 及 rect 6/ Shape的curve操作 7/ GUI 8/ Cocoa基础 9/ Shape中的oval shadow: “ 本期由 CanisMinor 创作,他是一枚 U
mixlab
2018/04/17
1.7K0
设计师编程指南之Sketch插件开发 10 - skpm & webview
IntelliJ IDEA/Android Studio插件开发指南
目前在为安卓手机QQ做自动化的相关工作,包括UI自动化,逻辑层自动化等。使用到的uiautomator等框架,需要在Android Studio进行编码工作。 其中很多工作如果做到插件化的话,可以有效地节省时间成本,提升大家的自动化效率。 比如运行自动化的时候,需要用到我们自定义的shell命令。我们可以通过插件来实现一键运行。 在运行adb shell am instrument命令的时候,需要编译出test APK和target APK。手Q整体的git仓库很大,编译耗时很久。我们想着通过一些方法来优化这个耗时。其中一个步骤就是,把我们代码目录下的变更,同步到一个编译目录下。 这个小功能的最合适的形态,自然就是Android Studio上的一个插件。点击一个按钮,一键同步,那可真是在米奇妙妙屋吃妙脆角——妙到家了! Android Studio是基于Intellij IDEA开发的,所以开发Android Studio的插件,其实就是开发IDEA的插件。 根据官方推荐,使用IDEA IDE来开发IDEA插件。
于果
2021/08/25
2.7K0
插件,脚本和命令目录
Sketch中的插件定义了一个或多个命令,其中Sketch将显示菜单项。 这些命令中的每一个实际上都是作为一个JavaScript函数实现的(我们称之为处理程序),位于该包中的脚本文件中。 每个脚本可以包含尽可能多的处理程序,并且每个命令都可以由不同的处理程序实现,因此,无论您是按照每个命令安排一个脚本,还是将所有命令处理程序放在单个脚本文件中,都由您决定。 因此,要了解如何制作插件,首先需要了解如何编写Sketch脚本。 教你如何编写JavaScript代码超出了这些页面的范围,所以我们假设你已经知道了这
iOSDevLog
2018/05/17
1K0
您的第一个插件目录
本文档将带您创建您的第一个Sketch插件(“Hello World”),并将解释Sketch的基本扩展性概念。 在本演练中,您将向Sketch添加一个新命令,该命令将显示一个简单的“Hello World”消息。在稍后的演练中,您将与Sketch画布交互并查询用户当前选定的图层。 先决条件 您需要安装Node.js并且可以使用它$PATH。Node.js包括npm,Node.js包管理器,它将用于安装Sketch插件开发人员的工具链。 生成一个新的插件 将自己的功能添加到Sketch的最简单方法是通过添加
iOSDevLog
2018/05/17
6160
设计师编程指南之Sketch插件开发 1
发现网上关于sketch插件开发的指南太少了,而且都不一定可以成功运行,于是我就写了这个系列的文章: 1 我们需要了解的语法特点 sketch 是基于 CocoaScript ,支持在 JS 中调用 objective-c 的方法。我们需要了解一些 objecttive-c 的一些语法特点。 Objective-C 最大的特色是承自 Smalltalk 的消息传递模型 message passing 。C++ 里,调用一个方法的语法如下: obj.method(argument); Objective-C
mixlab
2018/04/17
1.9K0
设计师编程指南之Sketch插件开发 1
插件捆绑目录
---- 插件是一个或多个脚本的集合。每个脚本定义一个或多个以某种方式扩展Sketch的命令。 在磁盘上,插件是具有.sketchplugin文件扩展名的文件夹,包含文件和子文件夹。 严格来说,插件实际上是一个OS X软件包,被安排为OS X软件包。 包是Finder向用户呈现的任何目录,就好像它是单个文件一样(您可以使用Finder中的“ 显示包内容”命令查看内部)。 一个包是一个具有标准化层次结构的目录,该目录包含可执行代码和该代码使用的资源。 Sketch插件不允许本机编译代码,但我们确实使用标准包
iOSDevLog
2018/05/17
1.2K0
开发环境目录
---- 如果您花费了开发Plugins for Sketch的不少重要时间,则可以使用这些首选项对工作流程进行一些改进。 由于并非所有Sketch用户都是插件开发人员,因此在“首选项”面板中为这些首选项设置UI并没有任何意义。您需要使用Terminal.app来启用/禁用它们。 为插件定义一个代码编辑器 有最喜欢的代码编辑器?你可以告诉Sketch使用它来编辑插件。例如,如果你使用Atom,你可以这样做: $ defaults write ~/Library/Preferences/com.bohemi
iOSDevLog
2018/05/17
1.1K0
Electron利用web技术开发桌面应用
简单来说,Electron就是可以让你用Javascript、HTML、CSS来编写运行于Windows、macOS、Linux系统之上的桌面应用的库。本文的目的是通过使用Electron开发一个完整但简单的小应用:记事本,来体验一下这个神器的开发过程。本文犹如Hello World一样的存在,是个入门级笔记,但如果你之前从未接触过Electron,而又对它有兴趣,某想信这会是一篇值得一看的入门教程。   PS:这篇文章是基于Windows的开发过程,未对macOS、Linux作测试。
javascript.shop
2019/09/04
2.3K0
Electron利用web技术开发桌面应用
开发属于自己的插件 | IDEA & Android Studio插件开发指南
谷轩宇——从事安卓开发,目前效力于通天塔技术开放组是否曾经被ide重复繁琐的操作所困扰,又或者没有心仪的UI控件而难受。那么请阅读这篇文章,掌握idea插件的开发流程,开发属于自己的插件,造福开源社区。
京东技术
2018/09/28
5K0
开发属于自己的插件 | IDEA & Android Studio插件开发指南
VS Code插件开发介绍(一)
前段时间做了一个基于命令行的效率工具,可以自动生成组件的模板代码。自己用起来还觉得挺好,但在组内案例几次后大家都不愿意用,究其原因还是命令行工具使用起来门槛有点高,不方便。由于组内已经统一使用VS Code进行开发了,于是决定研究下VS Code的插件开发,让效率工具更方便的用起来。
Dickensl
2022/06/14
7960
VS Code插件开发介绍(一)
vscode插件开发入门
在我们日常使用中,会安装很多插件,如: 主题、Prettier、code snippets、Eslint、Jest Runner、Git等等。每种插件都能解决我们实际开发中的某一块诉求。我把所有的插件大致归为三类:UX/UI类、语言类、工具类
gary12138
2022/10/05
5.9K0
vscode插件开发入门
用JS开发跨平台桌面应用,从原理到实践
使用Electron开发客户端程序已经有一段时间了,整体感觉还是非常不错的,其中也遇到了一些坑点,本文是从【运行原理】到【实际应用】对Electron进行一次系统性的总结。【多图,长文预警~】
ConardLi
2019/06/15
7.2K0
IntelliJ插件开发-京东工程师教你改造你的IDE
王帅廷,京东 Android高级开发工程师,6年以上开发经验,对设计框架有着深刻的认识,负责京东商城研发工具的开发,设计并完成了多个IntelliJ插件的开发工作。
京东技术
2018/07/30
3.3K1
IntelliJ插件开发-京东工程师教你改造你的IDE
Chrome 插件开发
经常要访问一些工具网站,根据页面上特定的取值。这些行为其实完全可以被视作重复劳动,有机会被脚本或者插件的自动行为取代。iMacro 或者 Greasemonkey 都是做这件事的好工具,今天下午有时间,要不干脆写一个 Chrome 插件吧。
四火
2022/07/15
1.2K0
Chrome 插件开发
相关推荐
深入浅出 Sketch 插件开发
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档