美文网首页
TinyPNG-Ruby脚本

TinyPNG-Ruby脚本

作者: Billlin | 来源:发表于2017-07-11 12:13 被阅读0次

TinyPNG 官方网址:https://tinypng.com 是一个非常不错的图片压缩工具,在保持alpha通道的情况下对PNG的压缩可以达到1/3之内,而且用肉眼基本上分辨不出压缩的损失。

=begin
 https://tinypng.com/developers/reference/ruby
 调用tinypng的API对png和jpg格式的图片进行批量压缩
 将TINIFYKEY换成自己申请的key
 使用时需要指定要压缩的文件夹
 ruby tinypng.rb images
 压缩后会直接覆盖原有的图片,压缩前请自行备份原图
 压缩失败的图片会保存在ARGV[0]_Failure文件夹下
=end

require 'fileutils'
require 'tinify'

#tinyPNG的key,https://tinypng.com/developers
TINIFYKEY = ""
Tinify.key = TINIFYKEY

TINIPNGFAILPATH = `pwd`.chomp + "/" + ARGV[0] + "_Failure/"

#创建一个保存压缩失败图片的文件夹
def createFilurePath
    if !File.directory? TINIPNGFAILPATH
        Dir.mkdir TINIPNGFAILPATH
    end
end

#调用tinypng的API进行图片压缩
def tinify(imgPath, imgName)
    puts "#{imgName}开始压缩"
    
    begin
       source = Tinify.from_file imgPath
       source.to_file imgPath
    rescue
        createFilurePath
        p = `pwd`.chomp + "/" + imgPath
        copyP = TINIPNGFAILPATH + imgName
        FileUtils.cp p, copyP
        puts "#{imgName}压缩失败 #{$!}"
    end
end

def tinifyImage(path)
    Dir.foreach path do |entry|
        if entry == "." || entry == ".." || entry == ".DS_Store" #如果是这三个文件直接跳过
            next
        end
        
        p = "#{path}/#{entry}" #文件的路径
        if File.file? p
            if (p.end_with? ".png") || (p.end_with? ".jpg") #tinify只能压缩png和jpg格式的图片
                tinify p, entry
            end
        end
    end
end

if ARGV[0]
    tinifyImage ARGV[0]
else
    puts "请指定文件夹"
end

下载代码

相关文章

  • TinyPNG-Ruby脚本

    TinyPNG 官方网址:https://tinypng.com 是一个非常不错的图片压缩工具,在保持alpha通...

  • 自瞄3.15

    【脚本开关→】开【←脚本开关】 【脚本版本→】通用技能自瞄3.15【←脚本版本】 【脚本关闭公告→】脚本已更新.....

  • 自瞄3.16

    【脚本开关→】开【←脚本开关】 【脚本版本→】通用技能自瞄3.16【←脚本版本】 【脚本关闭公告→】脚本已更新.....

  • 为什么会有人说引流脚本不靠谱?原来是还没了解透彻引流脚本

    引流脚本,什么是引流脚本?引流脚本怎么样?引流脚本好用吗?引流脚本靠谱吗?引流脚本是骗局吗?引流脚本效果好吗?引流...

  • Kettle11:Kettle脚本控件

    本章讲解以下三种脚本的案例01 javascript脚本02 java脚本03 执行SQL脚本 脚本 1.脚本是转...

  • 进程守护脚本

    进程守护脚本 新建脚本 编辑脚本 添加可执行权限 启动脚本

  • DoTween

    /* 项目: 脚本:校园导航管理脚本 脚本:此脚本挂载在SchoolMenuPanel上 脚本:点击二级导航按钮,...

  • UI Recorder之Android自动化

    简单介绍 之前已经进行了Web的脚本录制,脚本回放,及脚本运行。这次进行Android端脚本录制、脚本回放,及脚本...

  • 宝塔Linux面板命令大全

    【安装宝塔】centos安装脚本 Ubuntu/Deepin安装脚本: Debian安装脚本 Fedora安装脚本...

  • 透视3.16

    【脚本开关→】开【←脚本开关】 【脚本关闭公告→】服务器更换..【←脚本关闭公告】

网友评论

      本文标题:TinyPNG-Ruby脚本

      本文链接:https://www.haomeiwen.com/subject/ataphxtx.html