- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有一个新编译的 libjpeg 版本 9,并尝试在命令行中使用以下参数运行 jpegtran.exe:
.\jpegtran.exe -rotate 180 -outfile test_output1.jpg testimg.jpg
testimg.jpg: test_output1.jpg:
如您所见,它确实旋转了图像,但它对其进行了裁剪并且没有正确组合在一起。软件包附带的 usage.txt 文件并不完全是最新的,因为我不得不使用 -outfile 开关而不是它所说的:
jpegtran uses a command line syntax similar to cjpeg or djpeg. On Unix-like systems, you say:
- jpegtran [switches] [inputfile] >outputfile
On most non-Unix systems, you say:
- jpegtran [switches] inputfile outputfile
where both the input and output files are JPEG files.
To specify the coded JPEG representation used in the output file, jpegtran accepts a subset of the switches recognized by cjpeg:
- -optimize Perform optimization of entropy encoding parameters.
- -progressive Create progressive JPEG file.
- -arithmetic Use arithmetic coding.
- -restart N Emit a JPEG restart marker every N MCU rows, or every N MCU blocks if "B" is attached to the number.
- -scans file Use the scan script given in the specified text file.
See the previous discussion of cjpeg for more details about these switches. If you specify none of these switches, you get a plain baseline-JPEG output file. The quality setting and so forth are determined by the input file.
The image can be losslessly transformed by giving one of these switches:
- -flip horizontal Mirror image horizontally (left-right).
- -flip vertical Mirror image vertically (top-bottom).
- -rotate 90 Rotate image 90 degrees clockwise.
- -rotate 180 Rotate image 180 degrees.
- -rotate 270 Rotate image 270 degrees clockwise (or 90 ccw).
- -transpose Transpose image (across UL-to-LR axis).
- -transverse Transverse transpose (across UR-to-LL axis).
奇怪的是(或者可能不是),如果我执行 .\jpegtran.exe -rotate 180 -outfile test_output2.jpg test_output1.jpg
我会得到原始图像,没有任何裁剪问题。它会翻转剪裁的部分,但不会将其与图像的其余部分对齐。
test_output2.jpg:
我通过执行两次 jpegtran.exe -rotate 90
得到相同的结果。
此外,我在一个更大的 .jpg 文件上进行了尝试,这导致了同样的问题,但输出的文件大小小了 18KB。我想这个问题与此有关。
编辑 - 我还发现了这个似乎描述问题的简介:
jpegtran's default behavior when transforming an odd-size image is designed to preserve exact reversibility and mathematical consistency of the transformation set. As stated, transpose is able to flip the entire image area. Horizontal mirroring leaves any partial iMCU column at the right edge untouched, but is able to flip all rows of the image. Similarly, vertical mirroring leaves any partial iMCU row at the bottom edge untouched, but is able to flip all columns. The other transforms can be built up as sequences of transpose and flip operations; for consistency, their actions on edge pixels are defined to be the same as the end result of the corresponding transpose-and-flip sequence.
-trim 开关有效,如果你可以这样调用它的话,它会修剪掉杂乱无章的数据,但图像变小并且丢失数据。
test_output5.jpg:
添加 -perfect 开关,据说可以阻止上述情况的发生,结果是:transformation is not perfect
for output and no image.
所以不能无损旋转 .jpg 吗?我自己可以通过简单地将边缘线移动到正确的位置来进行绘画和重建原始图像。有没有在 libjpeg 中执行此操作的方法?
最佳答案
无损旋转适用于 JPEG 文件中包含的整个 DCT block 。这些 block 始终为 8x8 或 16x16 像素(取决于压缩 downsampling 设置)。该文件包含宽度和高度,因此在解码图像时可以丢弃额外的像素,但无法将剪裁从右/下边缘移动到左/上边缘。该软件正在尽力解决不可能的问题。
正如您所发现的那样,解决此问题的方法是使宽度和高度能被 16 整除。您会发现例如来自相机的图像将具有此属性。
关于c++ - jpegtran.exe 无法正确旋转图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14612809/
我的 grunt 文件在我的 MacBook Pro 上本地运行成功,但在我的 Ubuntu Plesk 服务器上运行失败,不知道出了什么问题。非常感谢您的帮助。 我注释掉了引用一个巨大图像库的部分,
我需要优化一些图像,但不能更改它们的名称。 jpegtran -copy none -optimize image.jpg > image.jpg 但是,这似乎创建了一个 0 的文件大小。当我对不同的
我想用命令行中的 jpg 图像优化整个测试文件夹。 我发现了这个,但它不起作用: cd /home/site/html/update/test/ find . -exec jpegtran -opti
一个多星期以来,我一直在寻找解决此错误的方法,但找不到任何东西。由于这个 imagemin-jpegtran,我无法在 Yeoman 上构建我的 dist 包 我尝试上传图片以显示错误并使事情变得更容
我有一个新编译的 libjpeg 版本 9,并尝试在命令行中使用以下参数运行 jpegtran.exe: .\jpegtran.exe -rotate 180 -outfile test_output
每当我尝试让 imagemin 处理任何类型的图像时,我都会收到此错误: 21:54:49] 启动“imgmin”... [21:54:49] 'imgmin' 在 47 毫秒后出错 [21:54:4
我发现关于这个问题的两篇博客文章略有冲突,我在这里总结一下: jpegoptim and jpegtran perform identically and produce identical resu
我在多个目录中有照片。我想使用 jpegtran(命令行工具)递归地遍历每一个,优化它并保存(覆盖它) 如果它们都在一个文件夹里,我就用这个 for JPEG in *.jpg ; do jpegtr
我是一名尝试开始使用 jpegtran 的 Windows 用户,但还没有找到实际访问该程序的方法。我发现的所有问题都从命令行开始,但在尝试复制命令时,我收到如下错误: 查看后this questio
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎与 help center 中定义的范围内的编程无关。 . 关闭 7 个月前。 Improv
现在我有以下用于处理图像的批处理文件: @echo none cd %1 md "%~1\ProcessedJPEGS" for %%i in (*.jpg) do "C:\Program Files
我想压缩图片并通过管道传输到构建目录,但是运行任务后构建文件夹是空的。这是我的任务: // Gulp.js configuration // modules const gulp = require(
更新见底部 我遇到了一些奇怪的问题。对于初学者,我使用的是最新的 Eclipse CDT,在实现 do_rot_180 之前,编译器链接了文件夹 projectName/include 但之后它现在需
是否可以在 Windows 上使用 jpegtran 批量转换 JPEG 图像文件夹? 我通常对一个文件使用以下命令,但我不确定如何将它应用于 JPEG 文件的整个目录: jpegtran -copy
我正在使用扩展程序来优化 Magento 的图像。扩展需要在我的服务器上安装 gifsicle、jpegtran 和 optipng 但我不知道我将如何安装并获取安装的确切路径。谁帮我做这个 最佳答案
我有这个脚本来优化目录中的图像,我需要进行递归以优化子目录中的所有图像,保持文件名和文件夹结构不变。任何人都可以帮助修改此代码,以便修改中的图像子目录也有吗? @echo none cd %1 md
我有这个脚本来优化目录内的图像,我需要使这个递归以优化子目录中的所有图像,保持文件名和文件夹结构不变。任何人都可以帮助修改此代码以修改图像子目录也是? @echo none cd %1 md "%~1
我的应用尝试根据 exif 数据旋转图像。 我不断收到有关 jpegtran 的请求,提示“顺序 jpeg 的 SOS 参数无效”和 jhead 中止操作。显然这甚至不是一个致命警告,许多论坛都给出了
我有 100 种(也许 1000 种)产品,每个产品的 10-30 张图片都放在我放在一起的在线商店中。我需要在不降低图像质量的情况下尽可能优化图像的文件大小。 我没有直接使用 jpegtran、jp
我得到了 Yeoman 的 generator-angular-fullstack并运行 yo angular-fullstack (没有 Heroku),但后来我遇到了这些失败和错误: 3 fa
我是一名优秀的程序员,十分优秀!