批量裁剪和调整图像大小以创建缩略图

2023-12-19

我有一大堆 jpg 图像,我想为其创建缩略图。这些图像都有不同的尺寸和分辨率,但我希望所有缩略图都有标准尺寸,例如120x80 像素。但是,我不想拉伸图像。所以我想做以下一些事情:

  1. 将图像裁剪为 1.5 : 1 的宽高比。将裁剪区域居中(即左右、上下等量剪掉)
  2. 将图像大小调整为 120 x 80 像素。

linux 有没有命令可以做到这一点?我研究了 imagemick Convert,但我不知道如何进行居中裁剪。看来每张图片都要手动指定裁剪区域?


这适用于大于 120x80 的图像。尚未在较小的设备上进行测试,但您应该能够对其进行调整。

#! /bin/bash
for img in p*.jpg ; do
    identify=$(identify "$img")
    [[ $identify =~ ([0-9]+)x([0-9]+) ]] || \
        { echo Cannot get size >&2 ; continue ; }
    width=${BASH_REMATCH[1]}
    height=${BASH_REMATCH[2]}
    let good_width=height+height/2

    if (( width < good_width )) ; then # crop horizontally
        let new_height=width*2/3
        new_width=$width
        let top='(height-new_height)/2'
        left=0

    elif (( width != good_width )) ; then # crop vertically
        let new_width=height*3/2
        new_height=$height
        let left='(width-new_width)/2'
        top=0
    fi

    convert "$img" -crop "$new_width"x$new_height+$left+$top -resize 120x80 thumb-"$img"
done
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

批量裁剪和调整图像大小以创建缩略图 的相关文章

  • 如何在linux中以编程方式获取dir的大小?

    我想通过 C 程序获取 linux 中特定目录的确切大小 我尝试使用 statfs path struct statfs 但它没有给出确切的大小 我也尝试过 stat 但它返回任何目录的大小为 4096 请建议我如何获取 dir 的确切大小
  • 如何阻止ubuntu在使用apt安装或更新软件包时弹出“Daemons using outdatedlibraries”? [关闭]

    Closed 这个问题是与编程或软件开发无关 help closed questions 目前不接受答案 我最近新安装了 Ubuntu 22 04 LTS 我发现每次使用 apt 安装或更新软件包时 它都会询问我有关Which servic
  • 无需超级用户即可在 Linux 中打开 RAW 套接字

    我必须编写一个在 Linux 上运行的 ping 函数 语言是 C 所以 C 也可以 在网上搜索并查看源代码ping命令 事实证明我应该创建一个原始套接字 icmp sock socket AF INET SOCK RAW IPPROTO
  • 尽管 if 语句,Visual Studio 仍尝试包含 Linux 标头

    我正在尝试创建一个强大的头文件 无需更改即可在 Windows 和 Linux 上进行编译 为此 我的包含内容中有一个 if 语句 如下所示 if defined WINDOWS include
  • iOS7 XIB 问题。顶部和底部的空白

    我有一个正在设置 ImageView 的视图 自动布局已选中 预览中看起来不错 但当应用程序实际在模拟器上运行时 仅在 iPhone 视网膜 4 英寸模拟器中 顶部和底部显示空白 3 5寸的看起来还不错 使用 iOS7 和 XCODE 5
  • 如何将 .ashx 处理程序与 asp:Image 对象一起使用?

    我有一个 ashx 处理程序 using System using System Web public class Thumbnail IHttpHandler public void ProcessRequest HttpContext
  • 如何获取 (Linux) 机器的 IP 地址?

    这个问题和之前问的几乎一样如何获取本地计算机的IP地址 https stackoverflow com questions 122208 get the ip address of local computer 问题 但是我需要找到一个的I
  • 如何将两个图像放置在一个div的对角

    如你所见 我不是 CSS 专家 我需要一些帮助来了解如何使用两个图像制作这个 div 如下图所示 托马斯是对的 但还有更好的解决方案 div img class align left src alt description of your
  • 在 Chrome 中,应用于包含图像的锚点的轮廓高度不正确

    对于我正在开发的网站 我希望当链接聚焦 悬停 活动时 链接周围会出现虚线轮廓 我希望文本和图像链接发生这种情况 我遇到的问题是 虽然我的代码在 Firefox 和 IE 中运行良好 但在 Chrome 7 0 517 41 中 虚线轮廓与我
  • 如何褪色

    我想将像素的颜色淡化为白色 但显然保持相同的颜色 如果我有一个像素 200 120 40 将每个值加上 10 以使 210 130 50 使其颜色相同 只是颜色更浅 还是会完全改变颜色 例如 我知道 100 100 100 即将 110 1
  • Mac OS X 上的 /proc/self/cmdline / GetCommandLine 等效项是什么?

    如何在不使用 argc argv 的情况下访问 Mac OS X 上的命令行 在 Linux 上 我会简单地阅读 proc self cmdline or use GetCommandLine在 Windows 上 但我找不到 Mac OS
  • 为什么opencv videowriter这么慢?

    你好 stackoverflow 社区 我有一个棘手的问题 我需要你的帮助来了解这里发生了什么 我的程序从视频采集卡 Blackmagic 捕获帧 到目前为止 它工作得很好 同时我用 opencv cv imshow 显示捕获的图像 它也工
  • 绕过 dev/urandom|random 进行测试

    我想编写一个功能测试用例 用已知的随机数值来测试程序 我已经在单元测试期间用模拟对其进行了测试 但我也希望用于功能测试 当然不是全部 最简单的方法是什么 dev urandom仅覆盖一个进程 有没有办法做类似的事情chroot对于单个文件并
  • 将一幅图像合成到另一幅图像上时,RMagick 透明度不起作用

    在下面的代码中 我尝试在一些山脉的图像上覆盖一个透明的正方形 我认为它会起作用 但是通过设置background color none 它不会使图像透明 结果是左上角有一个黑色方块 所需的结果是黑色方块应该是透明的 require open
  • 如何通过 BufferedImage 将巨大的图像加载到 Java 中?

    我想将大图像 18000 x 18000 加载到我的应用程序中 如果我使用BufferedImage与类型int rgb 我需要大约 1235mb 的堆内存来加载 这是一个非常大的内存量 最终用户可能拥有更少的内存 1GB 或更少 在我的开
  • Apache 访问 Linux 中的 NTFS 链接文件夹

    在 Debian jessie 中使用 Apache2 PHP 当我想在 Apache 的文档文件夹 var www 中创建一个新的小节时 我只需创建一个指向我的 php 文件所在的外部文件夹的链接 然后只需更改该文件夹的所有者和权限文件夹
  • 检查已安装的软件包,如果没有找到则安装

    我需要检查已安装的软件包 如果未安装则安装它们 RHEL CentOS Fedora 示例 rpm qa grep glibc static glibc static 2 12 1 80 el6 3 5 i686 如何在 BASH 中进行检
  • 如何更改javaFX中按钮的图像?

    我正在使用javaFX 我制作了一个按钮并为此设置了图像 代码是 Image playI new Image file c Users Farhad Desktop icons play2 jpg ImageView iv1 new Ima
  • 帮助将图像从 Servlet 获取到 JSP 页面 [重复]

    这个问题在这里已经有答案了 我目前必须生成一个显示字符串文本的图像 我需要在 Servlet 上制作此图像 然后以某种方式将图像传递到 JSP 页面 以便它可以显示它 我试图避免保存图像 而是以某种方式将图像流式传输到 JSP 自从我开始寻
  • 使用自定义堆的类似 malloc 的函数

    如果我希望使用自定义预分配堆构造类似 malloc 的功能 那么 C 中最好的方法是什么 我的具体问题是 我有一个可映射 类似内存 的设备 已将其放入我的地址空间中 但我需要获得一种更灵活的方式来使用该内存来存储将随着时间的推移分配和释放的

随机推荐

  • 从字符串中删除重音字符 - Python

    我从网页获取一些数据并在 python 中像这样读取它 origional doc urllib2 urlopen url read 有时此网址包含以下字符 and and ect 我怎样才能从字符串中删除这些字符 现在这就是我正在尝试的
  • 这段树遍历代码的错误在哪里?

    有一个错误Traverse 这导致它多次迭代节点 被窃听的代码 public IEnumerable
  • CSS3 - 3D 立方体 - IE 变换样式:preserve-3d 解决方法

    浏览完 IE10 后开发者博客 http msdn microsoft com en gb library ie hh673529 28v vs 85 29 aspx the ms transform style property我发现他们
  • 在弹性搜索查询中将子项视为父项的字段

    我正在阅读 elasticsearch 的文档 此 page 1 讨论了如何使用将子项映射到父项类型 parent 如果我有孩子叫email依附于父母称为account 每种类型的字段 account http localhost 9200
  • 如何设置仅允许站点默认页面的robot.txt

    假设我有一个网站http example com http example com 我真的很想让机器人看到主页 但任何其他页面都需要被阻止 因为它对蜘蛛来说毫无意义 换句话说 http example com http example co
  • Apache htpasswd 安全密码更改

    我的问题很简单 如何允许用户更改存储在Linux中的某些htpasswd文件中的密码而不泄露文件内容或允许用户修改其他密码 我尝试编写一个脚本来使用 ssh 和专门设计的用户来完成这项工作 但它没有成功 请帮忙 我正在使用 Debian 服
  • 在 VBA 中访问组内的形状组

    我正在尝试访问包含 VBA PPTX 中的组的子组 而不是所有形状 例如 这是我的分组结构 Group 1 Group 2 Line 1 长方形1 长方形2 我希望 GroupItems Count 为 2 一组和一个矩形 而不是 3 两个
  • 添加安装程序显示服务名称包含无效字符、为空或太长

    我已经创建了一个服务 当我右键单击并按创建安装程序时 我收到上述错误消息 服务名称未丢失且有效 问题可能在于我的服务有一个基类 有几个属性和一个空的构造函数 基本上看起来像这样 EmailService MyService MyServic
  • 如何使用地理位置而不是完整的国家和地区名称来获取国家和地区代码

    我正在构建一个网站 该网站使用 HTML5 中的地理位置来提供特定于用户所在区域的服务 这就是我一直在做的事情 我在此使用 Javascript所以问题 https stackoverflow com questions 6747833 h
  • 片段可以在 lift 中获取参数吗?

    lift 有没有办法将参数传递给片段 我正在尝试写一个pluraize我的页面的过滤器将根据有多少人显示 用户 或 用户 一词 1 user 2 users 它在 Django 中的工作方式称为filters https docs djan
  • `Eclipse/Project/Clean...` 和 `Eclipse/Project/Refresh (F5)` 有什么区别?

    有什么区别 Eclipse Project Clean and Eclipse Project Refresh F5 我经常必须 重建 包含几个相互依赖的项目的工作区 并且我不确定哪种是重新开始的最佳方法 如上所述here http www
  • 将 3D abline 添加到 Rlattice 包中的云图

    我想将 3D abline 添加到 Rlattice 包中的云散点图 这是我的数据的子集 3 个变量均在 0 1 之间 dat lt structure c 0 413 0 879 0 016 0 631 0 669 0 048 1 0 0
  • 使用 RedisTemplate 从 Redis 获取设置值

    我能够从中检索值Redis using Jedis public static void main String args Jedis jedis new Jedis HOST PORT jedis connect Set
  • 以编程方式发送到从界面生成器创建的前/后元素

    在界面生成器中 有一些布局选项可以将任何元素发送到后面或发送到前面 例如UIButton UIImage UILabel etc 现在 我想在运行时以编程方式执行相同的操作 有没有简单的方法可以做到这一点 我不想创建不同的视图 只需更新 z
  • 在 Swift 中创建一个目录并在其中存储文件

    我正在创建一个目录 以便我可以将临时视频保存到其中 因为 TempVideos 是一个文件夹 现在我的视频剪辑将位于该文件夹内 func createTempDirectoryToStoreVideos var error NSError
  • 谷歌文档脚本,搜索和替换文本字符串并更改字体(例如粗体)

    我是谷歌文档脚本的新手 在谷歌文档中 我需要搜索几个文本字符串 例如 lightface字体的 student 1 以将这些文本字符串替换为另一个文本字符串 例如 学生A 但在boldface font 为了搜索和替换 我使用以下代码 fu
  • 何时在 LINQ 中使用 lambda 表达式而不是Where子句

    我一直在深入研究 LINQ 并且正在尝试解决这个 lambda 表达式业务 我只是没有看到语法的一些细微差别的好处 首先 在我看来 lambda 表达式主要只是使用Where 子句的一种不同方式 那么为什么我不直接使用Where 子句呢 l
  • 在 Android 上使用 pjsip

    我成功安装并构建了pjsip图书馆和pjsua对于Android 我跑了pjsua在我的设备上并且它有效 但是我仍然不知道如何使用这个库的方法 我已经看过了CSipSimple应用程序 我注意到jni这两个项目的文件夹非常不同 我是否必须将
  • Google 计算引擎 .NET API 示例/样本/教程

    我还没有找到任何可以清楚地解释如何通过 net API 特别是 c 使用 google 计算引擎的内容 有没有人可以给我指点什么 附 我知道 API 参考 https developers google com resources api
  • 批量裁剪和调整图像大小以创建缩略图

    我有一大堆 jpg 图像 我想为其创建缩略图 这些图像都有不同的尺寸和分辨率 但我希望所有缩略图都有标准尺寸 例如120x80 像素 但是 我不想拉伸图像 所以我想做以下一些事情 将图像裁剪为 1 5 1 的宽高比 将裁剪区域居中 即左右