JPEG 的无损裁剪(剪切和粘贴)

2023-12-30

我正在寻找无损 jpeg 操作的示例/博客文章/等(裁剪 n drop = 剪切和粘贴)。我知道有一个程序jpegtran(http://jpegclub.org/jpegtran)它可以执行无损裁剪(在某些情况下),但似乎缺乏良好的文档。是的,我已经尝试过谷歌。

jpegtran还有一个实验分支,允许在某些情况下无损删除(=粘贴),但其文档似乎更糟糕。

jpegtran 的怎么样drop开关是实验性的吗?它有已知问题吗?人们使用它吗?

drop看起来是一个非常酷且有用的功能,而且我觉得奇怪的是它已经实验了 10 多年......

是的,可以使用 PNG 等无损格式来进行此类操作,但我对 JPEG 特别感兴趣。

Thanks!


我花了太多时间试图解决这个问题,所以希望这对其他人有帮助。当搜索关于这个所谓的“crop 'n drop”功能的文档时,这个问题在谷歌上的排名相当高。

概述:

jpegtran -drop允许您将块从一个 JPEG“拖放到”另一个 JPEG 上。

它仅替换现有块,不会扩展输入,因此您不能仅使用连接两个 JPEG-drop.

但是,如果您提供-crop如果参数大于输入图像,JPEGTran 将写出空白(灰色)块以扩展到所需的大小。你可以then use -drop用您想要的图像替换这些新的空白块。

看我蹩脚的 ASCII 艺术示例:

  1. 你有两个图像,A.jpg and B.jpg,两者的尺寸均为256x256。我们希望将这些并排连接起来以产生一个512x256 image.

    +---------+  +---------+
    |         |  |         |
    |  A.jpg  |  |  B.jpg  |
    |         |  |         |
    +---------+  +---------+
    
  2. “取消裁剪”A.jpg到所需的尺寸。这-crop参数是标准 X11 几何符号:WIDTHxHEIGHT+X+Y 正 X/Y 值分别从顶部/左侧测量,负值从底部/右侧测量。

    jpegtran -crop 512x256+0+0 -outfile O.jpg A.jpg
    
    +---------+---------+
    |         \         |
    |  O.jpg  \ (blank) |
    |         \         |
    +---------+---------+
    
  3. 现在“放下”B.jpg进入新的空白部分O.jpg The -drop参数仅使用原点 X/Y 坐标。

    jpegtran -drop +256+0 B.jpg -outfile O.jpg O.jpg
    
    +---------+---------+    +---------+
    |         \         |    |         |
    |  O.jpg  \    o<========|  B.jpg  |
    |         \         |    |         |
    +---------+---------+    +---------+
    
  4. 完毕!您现在有一个文件,O.jpg,尺寸为512x256,其中包含的串联内容A.jpg and B.jpg

    +-------------------+
    |                   |
    |       O.jpg       |
    |                   |
    +-------------------+
    

Notes:

  • A.jpg and B.jpg必须具有相同的高度。如果B.jpg长高了,就会被剪掉。如果A.jpg较高时,图像的右侧将有一个空白的填充条。
  • A.jpg必须具有以完整块结束的宽度。 (通常意味着能被8整除?)
  • B.jpg可以具有任意宽度,并且不必是块大小的倍数。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JPEG 的无损裁剪(剪切和粘贴) 的相关文章

  • Matlab 图像数据的 hist 函数

    我是 Matlab 新手 我想制作自己的函数 与 imhist 显示图像数据的直方图 完成相同的工作 但我对此完全是新手 我不知道如何做开发这样的功能 我开始做一些东西 但它非常不完整 function output args myhist
  • 从包含带边框的表格的图像中提取表格结构

    我正在尝试提取下表中的单元格位置 应用自适应阈值处理后 我能够获得细胞位置周围的轮廓 并且 HoughLines 获得垂直和水平结构元素 这是我的代码 img cv2 imread os path join img path file im
  • iPhone JPG 图像有非标准魔术字节 ff d8 ff e1?

    我的网络应用程序在接受上传的图像之前会根据文件扩展名检查前四个字节 一位同事向我展示了他 iPhone 上的图像 但这些图像被拒绝了 它们具有不同的第四个字节 e1 225 而不是预期的 e0 224 这对于 iPhone 来说是常见的吗
  • android中根据屏幕尺寸计算图像尺寸

    我正在尝试根据屏幕尺寸计算图像高度和宽度 我从后端获取 5 x 7 尺寸的图像 为了将像素乘以 72 进行转换 我有 360 X 504 尺寸的图像 对于 360 X 504 我的动态透明矩形区域将显示为 1 223 x 1 179 即 8
  • JPEG 中的颜色配置文件检测

    我希望能够检测 JPEG 中是否存在颜色配置文件 需要明确的是 我对实际进行颜色校正或用它们做任何其他事情不感兴趣 我做了一些调查 但找不到任何明确的信息来源 到目前为止我所知道的是 里面有一个颜色配置信息XMP块 XMP 块位于0xFFE
  • 如何使用网格分割图像并保留透明度边界框

    我有一些 png 图像 我想将其分成几个部分 例如按网格或大小 但每个部分应具有与原始图像相同的边界框 透明度 Example 将图像分成两部分 原来的 200 89 Output 部分 1 png 200 89 第2部分 png 200
  • 安卓的限制

    我需要构建一个应用程序 该应用程序拍摄相机图像并将其上传到网络 在网络上进行一些处理并返回真 假 我在这方面遇到了一些问题 希望得到澄清 1 我的应用程序有什么方法可以知道 Android 相机捕获的图像吗 我从这里明白了什么 Androi
  • BitmapFactory.decodeResource() 忽略 jpg 图像的 inPreferredConfig 选项

    我尝试将jpeg资源图像加载到ARGB 8888格式的位图 BitmapFactory Options opts new BitmapFactory Options opts inPreferredConfig Bitmap Config
  • pytesseract 无法从图像中识别复杂的数学公式

    我在用pytesseractpython 中的模块 pytesseract从图像中识别文本 但它不适用于包含复杂数学公式 例如根 推导 积分数学问题或方程 的图像 代码2 py Import modules from PIL import
  • Java中读取图像文件的方式有什么区别?

    在java中读取图像文件有多种方法 例如BufferedImage and ImageIcon仅举几例 我想知道这些情况有什么区别 它们是否依赖于上下文 在特定情况下只能使用其中一个 阅读所选图像的最佳方式是什么JFileChooser由用
  • 找到 4 个特定的角像素并将它们与扭曲透视一起使用

    我正在使用 OpenCV 我想知道如何构建一个简单版本的透视变换程序 我有一张平行四边形的图像 它的每个角都由具有特定颜色的像素组成 该像素在图像中没有其他位置 我想遍历所有像素并找到这 4 个像素 然后我想将它们用作新图像中的角点 以扭曲
  • 是否可以将 ppm 文件从 p3 转换为 p6 或使用pillow lib 打开 ppm p3 文件

    是否可以将 ppm 文件从 p3 转换为 p6 或使用pillow lib 打开并读取 ppm p3 文件 我实际上有 ppm p3 文件 并尝试使用pillow lib 将它们转换为 jpg 但不幸的是 它不读取 p3 文件 只读取 p6
  • python:将base64编码的png图像转换为jpg

    我想使用 python 将一些 base64 编码的 png 图像转换为 jpg 我知道如何从 Base64 解码回原始 import base64 pngraw base64 decodestring png b64text 但现在我怎样
  • 估计 libGD 操作所需的内存

    在尝试使用 libGD 在 PHP 中调整图像大小之前 我想检查是否有足够的内存可用于执行该操作 因为 内存不足 会完全终止 PHP 进程并且无法捕获 我的想法是 原始图像和新图像中的每个像素 RGBA 需要 4 字节内存 check av
  • 在 opencv 中一次性将旋转和平移结合起来

    我有一段用于旋转和平移图像的代码 Point2f pt 0 in rows double angle atan trans c trans b 180 M PI Mat r getRotationMatrix2D pt angle 1 0
  • 透视变形矩形的比例

    给定一张被透视扭曲的矩形的二维图片 我知道这个形状原本是一个矩形 但我不知道它原来的大小 如果我知道这张图片中角点的像素坐标 我如何计算原始比例 即矩形的商 宽度 高度 背景 目标是自动使矩形文档的照片不失真 边缘检测可能会通过霍夫变换完成
  • C++ OpenCV imdecode 慢

    我将图像的字节数组从 C 发送到 C 库 我使用 OpenCV 版本 3 3 1 解码图像 BMP 图像解码速度很快 但 JPEG 图像解码速度很慢 如何加快 JPEG 图像的解码时间 多线程 GPU 解码性能 Resolution For
  • 图像分析-光纤识别

    我是图像分析新手 您知道如何以仅获取纤维的方式对该图像进行二值化吗 我尝试过不同的阈值技术等 但没有成功 我不介意应该使用什么工具 但我更喜欢 NET or Matlab PS 我不知道该把答案放在哪里 所以我把它放在StackOverfl
  • 计算径向轮廓的最有效方法

    我需要优化图像处理应用程序的这一部分 它基本上是按距中心点的距离划分的像素的总和 def radial profile data center y x np indices data shape first determine radii
  • 纯Python库读写jpeg格式

    伙计们 我正在寻找 jpeg 写入 阅读会很好 但不是必需的 库的纯 python 实现 我只在以下位置创建了 TonyJPEG 库端口 http mail python org pipermail image sig 2004 Novem

随机推荐

  • cordova - 多个 dex 文件定义 Lcom/google/android/gms/iid/zzc

    我正在尝试编译适用于 Android 的 cordova 应用程序 但收到此错误 有任何想法吗 这是我收到的错误 FAILURE Build failed with an exception What went wrong Executio
  • 如何对多态向量中包含的元素进行拆箱?

    看完之后这是 属于特征的对象的向量 的答案 https stackoverflow com a 25819164 129805 看起来 Rust 会自动拆箱 是这样吗 我的代码无法编译 我不明白该答案的代码如何编译 对包含装箱特征的多态向量
  • 如何查看Boto3 HTTPS请求字符串

    我已经能够查看 botocore 发送的PreparedRequest 的属性 但我想知道如何查看发送到AWS 的确切请求字符串 我需要确切的请求字符串才能将其与我正在测试 AWS 调用的另一个应用程序进行比较 您还可以在 boto3 中启
  • 如何组合和验证 swt 对话框的两个文本字段?

    我有另一个问题 我使用一个文本字段的修改侦听器来激活和停用 swt 对话框中的 确定 按钮 效果很好 现在我想为另一个文本字段添加修改侦听器 我希望仅当两个文本字段中都至少有一个字符时才激活 确定 按钮 这是两个字段的代码 descript
  • 如何验证 ADFS SAML 令牌

    我目前正在从 ADFS 生成 SAML 令牌 如下所示 WSTrustChannelFactory factory null try use a UserName Trust Binding for username authenticat
  • 如何在 Heroku 上使用 Datomic Pro?

    我想在 Heroku 上使用 Datomic Pro 目前为入门版 但我不想将我的下载密钥提交到 Git 中 相反 正确的做法似乎是将其存储在环境变量中 这意味着我的project clj现在包含 dependencies org cloj
  • 在 inversifyjs 中重置作用域容器

    我正在实现一个范围容器架构 这样一个新的container为每个 Express 请求 或 apollographql 请求 创建 我有一个生命周期方法 可以在发送完响应后调用 这有利于清理和释放内存 并且该方法可以引用我们已完成服务的请求
  • 我们可以在Java中调用带有空对象的静态方法吗?如果是这样,怎么办?

    既然静态方法可以直接从类中调用 即ClassName methodName 为什么需要用类的对象来调用静态方法呢 如果有人知道的话 请举例说明 public static void methodA 以下代码包含一个示例 其中通过null参考
  • 为什么我的通用 StatefulWidget 类在运行时会出现 TypeError?

    我有一个通用的StatefulWidget类有一个Function打回来 当我尝试调用该回调时 我得到一个运行时TypeError EXCEPTION CAUGHT BY WIDGETS LIBRARY The following Type
  • Tomcat 中的共享 JNI 库 (.so) - UnsatisfiedLinkError

    我有一个在 Tomcat7 中部署的两个 Web 应用程序之间共享的 JNI 库 so 我在正在部署的第一个 Web 应用程序中仅使用 System loadLibrary 加载一次库 然后在第二个应用程序中检查它是否已加载以不再加载 我尝
  • 活动与片段生命周期[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我正在开发我正在使用的新应用程序Activity and Fragment 他们之间有什么主要区别吗 Update 我在 Androi
  • 我可以使用 asyncio 读取和写入 multiprocessing.Pipe 吗?

    我需要在 Python 中的进程之间进行通信并且正在使用asyncio在每个进程中进行并发网络IO 目前我正在使用multiprocessing Pipe to send and recv进程之间存在大量数据 但是我在外部这样做asynci
  • CRC32 校验和是如何计算的?

    也许我只是没有看到它 但 CRC32 似乎要么不必要地复杂 要么在我可以在网络上找到的任何地方都没有得到充分的解释 我知道它是消息值的基于非进位的算术除法除以 生成器 多项式的余数 但它的实际实现让我无法理解 我读了CRC 错误检测算法的轻
  • 所有不同 Intl.NumberFormats 的完整列表

    我正在寻找所有不同 Intl NumberFormats 的完整列表 The 国际数字格式 https developer mozilla org en US docs Web JavaScript Reference Global Obj
  • 如何在静态方法中调用类的成员变量?

    我正在使用某种方法来自动加载带有函数的帮助程序文件 我现在遇到的唯一问题是如何调用该类中的变量 因为我没有将其实例化为对象 this行不通的 但会怎样呢 class some helperclass var some variable 00
  • 如何处理 Laravel 5 中的异常和错误消息?

    当我收到此错误时 Connection php 第 620 行中的 QueryException SQLSTATE 23000 完整性 违反约束 1062 重复条目 我可以用我自己的闪存错误消息来处理它 而不是 哎呀 看起来像出事了 您有两
  • 在ansible中创建一个带有循环的docker-compose

    我需要基于 yml 文件构建一个 docker compose 在下一个 yml 中 它将是每个服务的名称 图像和版本 services service front image acalls caselog web app version
  • 如何在Android应用程序中创建游标数据而不从数据库获取数据?

    在我的 Android 应用程序中 我使用 Sqlite DataBase 来存储来自服务器的数据 我使用 ContentProvider 和 ContentResolver 访问 DataBase 中的数据 并使用 CursorAdapt
  • 空手道 - 如何处理 unicode 字符?

    我想发送一个 Unicode 字符串作为请求参数 如下所示 mobile 但空手道会这样发送 移动的 我尝试从包含我的文本的文件中读取 Unicode 文本 然后阅读并以这种方式发送 def persianMobile1 read clas
  • JPEG 的无损裁剪(剪切和粘贴)

    我正在寻找无损 jpeg 操作的示例 博客文章 等 裁剪 n drop 剪切和粘贴 我知道有一个程序jpegtran http jpegclub org jpegtran 它可以执行无损裁剪 在某些情况下 但似乎缺乏良好的文档 是的 我已经