热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

shell技巧2图片旋转缩放转换格式等

1、前言在macOS下,如果对大量图片进行处理或数据收集,查找了一下,通过使用sips命令,可以进行图片的大部分操作处理,如果使用shell,就可以灵活和自动化的批量操作图片!2、


1、前言


在macOS下,如果对大量图片进行处理或数据收集,查找了一下,通过使用 sips 命令,可以进行图片的大部分操作处理,如果使用 shell ,就可以灵活和自动化的批量操作图片!


2、sips 用法


常用的用法可以参考: 利器: Mac自带的图片工具Sips ,全部的用法可以参考: sips MAN page Man Page - macOS - SS64.com


以下就是引用 利器: Mac自带的图片工具Sips 内容:


1.裁剪时固定图片宽度,高度自适应
















1

sips -Z 320 iamge_file_name




2.裁剪时指定图片宽与高
















1

# 裁剪图片为400x300大小
sips -z 400 300 iamge_file_name




注:需要注意的是这里的参数是小写的z,并且图片缩放方式不是锁定图片比例的,即如果图片本身是16:9,则会导致图片被挤压。

3.旋转图片
















1

sips -r 90 image_file_name




注:上面的命令将图片顺时针旋转90度,相信机智的你已经想到逆时针90度应该是-90了。没错,顺时针用正数表示,逆时针可以用负数表示。你可以进行任意角度和方向的旋转。

4.翻转图片
















1

sips -f horizontal image_file_name




注:上面命令可以对图片进行水平翻转,-f支持水平和垂直两种翻转,水平(horizontal),垂直(vertical)。

5.修改图片格式
















1

sips -s format jpeg input.png -o output.jpg




注:使用-s参数可以修改图片格式为指定值,sips支持jpeg | tiff | png | gif | jp2 | pict | bmp | qtif | psd | sgi | tga共11种格式。并且-s除了能修改文件格式外,还能修改图片的其它meta数据,具体可以通过man sips查看。

6.获取图片meta信息
















1

sips -g pixelWidth -g pixelHeight image_file_name




注:上面命令可以获取图片的长宽高信息,与-s参数一样,-g也支持更多的meta值,可以参见man sips的信息,这里就不做赘述了。

3、shell 编程


通过使用 sips 命令进行图片处理,本来计划做一个功能库,但是想想还是没有必要,简单的写了一个图片旋转的示例,希望大家能举一反三,这都是授鱼不如授渔!


4、图片旋转代码实现


具体的代码,可参考我的Github代码:



  • iHTCboy/iShell: Shell脚本编程技巧,总结一些常用的提高效率的方法。




#!/bin/bash
# 定义用到的变量
imagePath=""
angle=""
# 定义读取输入字符的函数
getImagePath() {
echo "\n================================================"
# 监听输入并且赋值给变量
read -p "Enter image path: " imagePath
# 如果为空值,从新监听,否则执行旋转函数
if test -z "$imagePath"; then
getImagePath
else
rotationImage
fi
}
rotationImage() {
echo "\n================================================"
read -p "Enter angle(default 90°): " angle
# 如果为空值,默认设置为90度
if test -z "$angle"; then
angle="90"
fi
# 使用 sips 命令进行图片旋转
sips -r "${angle}" "${imagePath}"

echo "\n rotation $angle ° finished!"

# 重新调用旋转函数,方便多次旋转操作
rotationImage

}
# 首先执行函数,给变量赋值
getImagePath



5、总结


比如图片批量格式转换,图片尺寸批量获取等,通过 ship 命令,然后结合 sehll 脚本,效率和自动化不是梦!


关于sips的更多使用场景,可以看看这篇文章 使用sips命令自动缩减图片尺寸


下一节,结合刚需,打算写一个从一张1024的图片,自动生成Xcode所需要的全部图标,这应该是一个不错的想法!期待吧~


参考



  • 利器: Mac自带的图片工具Sips

  • sips MAN page Man Page - macOS - SS64.com

  • 使用sips命令自动缩减图片尺寸



  • 如有疑问,欢迎在评论区一起讨论!

  • 如有不正确的地方,欢迎指导!


注:本文首发于iHTCboy’s blog,如若转载,请注来源







如果喜欢,欢迎分享点赞,扫一扫鼓励,用心创造创新!


支付宝


微信







推荐阅读
  • Metasploit攻击渗透实践
    本文介绍了Metasploit攻击渗透实践的内容和要求,包括主动攻击、针对浏览器和客户端的攻击,以及成功应用辅助模块的实践过程。其中涉及使用Hydra在不知道密码的情况下攻击metsploit2靶机获取密码,以及攻击浏览器中的tomcat服务的具体步骤。同时还讲解了爆破密码的方法和设置攻击目标主机的相关参数。 ... [详细]
  • Java序列化对象传给PHP的方法及原理解析
    本文介绍了Java序列化对象传给PHP的方法及原理,包括Java对象传递的方式、序列化的方式、PHP中的序列化用法介绍、Java是否能反序列化PHP的数据、Java序列化的原理以及解决Java序列化中的问题。同时还解释了序列化的概念和作用,以及代码执行序列化所需要的权限。最后指出,序列化会将对象实例的所有字段都进行序列化,使得数据能够被表示为实例的序列化数据,但只有能够解释该格式的代码才能够确定数据的内容。 ... [详细]
  • baresip android编译、运行教程1语音通话
    本文介绍了如何在安卓平台上编译和运行baresip android,包括下载相关的sdk和ndk,修改ndk路径和输出目录,以及创建一个c++的安卓工程并将目录考到cpp下。详细步骤可参考给出的链接和文档。 ... [详细]
  • sklearn数据集库中的常用数据集类型介绍
    本文介绍了sklearn数据集库中常用的数据集类型,包括玩具数据集和样本生成器。其中详细介绍了波士顿房价数据集,包含了波士顿506处房屋的13种不同特征以及房屋价格,适用于回归任务。 ... [详细]
  • Go GUIlxn/walk 学习3.菜单栏和工具栏的具体实现
    本文介绍了使用Go语言的GUI库lxn/walk实现菜单栏和工具栏的具体方法,包括消息窗口的产生、文件放置动作响应和提示框的应用。部分代码来自上一篇博客和lxn/walk官方示例。文章提供了学习GUI开发的实际案例和代码示例。 ... [详细]
  • Go Cobra命令行工具入门教程
    本文介绍了Go语言实现的命令行工具Cobra的基本概念、安装方法和入门实践。Cobra被广泛应用于各种项目中,如Kubernetes、Hugo和Github CLI等。通过使用Cobra,我们可以快速创建命令行工具,适用于写测试脚本和各种服务的Admin CLI。文章还通过一个简单的demo演示了Cobra的使用方法。 ... [详细]
  • YOLOv7基于自己的数据集从零构建模型完整训练、推理计算超详细教程
    本文介绍了关于人工智能、神经网络和深度学习的知识点,并提供了YOLOv7基于自己的数据集从零构建模型完整训练、推理计算的详细教程。文章还提到了郑州最低生活保障的话题。对于从事目标检测任务的人来说,YOLO是一个熟悉的模型。文章还提到了yolov4和yolov6的相关内容,以及选择模型的优化思路。 ... [详细]
  • 本文介绍了Perl的测试框架Test::Base,它是一个数据驱动的测试框架,可以自动进行单元测试,省去手工编写测试程序的麻烦。与Test::More完全兼容,使用方法简单。以plural函数为例,展示了Test::Base的使用方法。 ... [详细]
  • HDFS2.x新特性
    一、集群间数据拷贝scp实现两个远程主机之间的文件复制scp-rhello.txtroothadoop103:useratguiguhello.txt推pushscp-rr ... [详细]
  • 也就是|小窗_卷积的特征提取与参数计算
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了卷积的特征提取与参数计算相关的知识,希望对你有一定的参考价值。Dense和Conv2D根本区别在于,Den ... [详细]
  • Imtryingtofigureoutawaytogeneratetorrentfilesfromabucket,usingtheAWSSDKforGo.我正 ... [详细]
  • 本文介绍了Swing组件的用法,重点讲解了图标接口的定义和创建方法。图标接口用来将图标与各种组件相关联,可以是简单的绘画或使用磁盘上的GIF格式图像。文章详细介绍了图标接口的属性和绘制方法,并给出了一个菱形图标的实现示例。该示例可以配置图标的尺寸、颜色和填充状态。 ... [详细]
  • 本文介绍了绕过WAF的XSS检测机制的方法,包括确定payload结构、测试和混淆。同时提出了一种构建XSS payload的方法,该payload与安全机制使用的正则表达式不匹配。通过清理用户输入、转义输出、使用文档对象模型(DOM)接收器和源、实施适当的跨域资源共享(CORS)策略和其他安全策略,可以有效阻止XSS漏洞。但是,WAF或自定义过滤器仍然被广泛使用来增加安全性。本文的方法可以绕过这种安全机制,构建与正则表达式不匹配的XSS payload。 ... [详细]
  • Android工程师面试准备及设计模式使用场景
    本文介绍了Android工程师面试准备的经验,包括面试流程和重点准备内容。同时,还介绍了建造者模式的使用场景,以及在Android开发中的具体应用。 ... [详细]
  • 本文介绍了在MFC下利用C++和MFC的特性动态创建窗口的方法,包括继承现有的MFC类并加以改造、插入工具栏和状态栏对象的声明等。同时还提到了窗口销毁的处理方法。本文详细介绍了实现方法并给出了相关注意事项。 ... [详细]
author-avatar
手机用户2502912835
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有