问题标签 [jpegoptim]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
3619 浏览

c# - ASP.Net 上的 jpegoptim -“打开临时文件时出错”

我怀疑我无法理解 jpegoptim 尝试在哪里写入其临时文件。

我有运行 ASP.Net 4 AppDomain 的 IIS 7.5。在其中,我有一个使用 jpegoptim 优化 JPEG 的过程,如下所示:

在本地运行我得到一个优化的图像。在上面的服务器上运行我得到:

D:\www\hplusf.com\b\pc\test.jpg 4096x2990 24bit N Adob​​e [OK] jpegoptim:打开临时文件时出错。

我可以显示 的代码FileHelper.Copy(),但如果文件已经存在,它基本上只是File.Copy()覆盖。

这是 ImageHelper.JpegOptim:

jpegOptimResult 是您在那里看到的错误消息。这是 ProcessRunner.RunProcess:

所以:

  • jpegOptim 在我的本地机器上正常运行,并优化了文件,所以这不是我调用 jpegOptim 的方式。

  • 复制操作成功且没有异常,因此这不是 ASP.Net 用户从该目录读取/写入的权限问题

  • jpegOptim 只是优化和覆盖文件,所以如果它实际上是在同一个 ASP.Net 用户下运行,那么写入这个文件应该没有问题,但是......

  • 目前尚不清楚 jpegOptim 尝试将其临时文件写入何处,因此潜在的问题可能是该临时文件的写入位置。

但是,从 Windows 来源来看:

http://sourceforge.net/p/jpegoptim/code/HEAD/tree/jpegoptim-1.3.0/trunk/jpegoptim.c

当与上述选项一起使用时,jpegOptim 的“临时文件”似乎只是目标文件。jpegOptim 源码的相关行:

这里有一些代码在寻找设置 dest=1 的 -d 参数——这意味着这里 dest 保持为 0。然后它会命中一个 if 分支,而 else 子句对于 dest == 0 执行以下操作:

这就是将输入图像文件名的目录名部分复制到变量中tmpdir- 所以就像 C:\Blah\18.jpg 会赋值tmpdir="C:\Blah\"。然后它将整个输入图像文件名转储到newname,这意味着它只是要覆盖它。

此时代码中使用的变量应该是:

然后它实际上打开了文件,并且有机会出现错误,表明 jpegoptim 正在成功打开文件。它还会解压缩文件,进一步确认它已成功打开它。

我看到的具体错误消息出现在这些行中 - 我承认我不知道 MKSTEMPS 是否设置为默认构建(我正在使用):

snprintf就像 C# 一样,String.Format()它应该产生如下路径:

D:\www\hplusf.com\b\pc\jpegoptim-1-2.XXXXXX.tmp

从我能发现的情况来看,很可能 MKSTEMPS 未定义,意思fopen是用“wb”调用,这意味着它正在编写一个二进制文件,它返回 null 意味着它无法打开,并且出现错误消息。

所以 - 可能的原因:

  • tmpdir 中的路径错误 可能我对 C++ 的使用不佳(可能),但是从外观上看,它应该与图像的源路径相同。但也许它被 jpegoptim 破坏为 tmpdir 了?输入路径显然是干净的,因为 jpegoptim 实际上在错误消息中干净地发出它。

  • 权限问题似乎不太可能。正在运行的 ASP.Net 用户可以清楚地读取和写入,因为它在 jpegoptim 触发之前复制到该目录,并且机器上唯一对该目录具有任何权限的用户是该用户,因此 jpegoptim 在此之前应该已经失败了如果是权限。它可能正在尝试访问不同的目录,但这确实是 Bad tmpdir 场景。

  • 还有一些我没有想到的。

想法?

注意:这个问题类似:

在 C# 中使用 jpegtran、jpegoptim 或其他 jpeg 优化/压缩

然而,这个问题是关于 GoDaddy 上的共享环境,导致答案围绕着他无法启动进程的可能性。我们可以完全控制我们的服务器,从上面可以清楚地看出,jpegoptim 进程肯定是成功启动的,所以这是一个不同的场景。

0 投票
1 回答
2938 浏览

php - jpegoptim PHP shell_exec 不压缩图像

我正在运行 Linux Centos 6.5 并安装了 jpegoptim。

为了确认这一点,我运行了 yum install jpegoptim 并得到以下信息:

软件包 jpegoptim-1.4.4-1.e16.x86_64 已安装且最新版本 无事可做

当我运行以下没有压缩发生,但图像被保存到正确的路径,我没有得到错误的。

当我运行以下命令时,我得到一个没有任何内容的图像文件保存到正确的路径,并且没有错误。

有没有人从 PHP 调用和压缩 jpegoptim 使用 shell_exec?

0 投票
2 回答
552 浏览

python - Python:优化内存中的图像(StringIO & POpen with jpegoptim)

我正在尝试使用各种库的 STDIN 版本(在本例中为 jpegoptim)压缩图像而不接触磁盘。

此代码不返回优化(jpegoptim 压缩)图像。

有人可以帮助或解释为什么 Popen() 与 StringIO.StringIO() 对象的这种用法不会返回图像的优化版本吗?如果我将文件保存到磁盘,它工作得很好。

0 投票
1 回答
500 浏览

php - 使用 shell_exec() 保存图像 - 使用 imagejpeg 和 jpegoptim,带有 stdin / stdinout

我保存了两次图像,一次是用 imagejpeg 创建它,然后用 jpegoptim 压缩和覆盖。我怎样才能一口气做到这一点,所以我不会两次保存图像?

Jpegoptim 有stdin 和 stdout,但我很难理解如何使用它们。

我想用外壳保存图像,所以我想像这样:

但很可惜,它并没有像我想象的那样工作。

0 投票
1 回答
230 浏览

c# - 使用 RedirectStandardInput 和 RedirectStandardOutput 调用 jpegOptim

我正在尝试做一些看起来应该相对简单的事情:从 C# 调用 jpegoptim。

我可以让它很好地写入磁盘,但是让它接受一个流并发出一个流到目前为止我还没有遇到 - 我总是以 0 长度输出或不祥的“管道已结束”告终。

我尝试过的一种方法:

我也试过这个解决方案:

http://alabaxblog.info/2013/06/redirectstandardoutput-beginoutputreadline-pattern-broken/

同样的问题。输出长度 0。如果我让 jpegoptim 在没有输出重定向的情况下运行,我会得到我所期望的 - 一个优化的文件 - 但当我以这种方式运行它时不会。

必须有正确的方法来做到这一点?

更新:找到了一条线索——我不觉得害羞吗——jpegoptim 直到 2014 年的实验性版本才支持管道到标准输入,并于今年修复。我拥有的版本来自一个较旧的库,日期为 2013 年。https://github.com/tjko/jpegoptim/issues/6

0 投票
1 回答
99 浏览

bash - 如何使用 find 命令为多个扩展运行批处理作业?

我正在尝试使用 jpegoptim 递归地优化我服务器上的所有 jpg 和 jpeg 图像。

此命令有效:

但我需要这样的东西:

这是行不通的。有没有办法做到这一点 ?

0 投票
1 回答
4591 浏览

image - 如何缩小和优化图像?

我目前jpegoptim在 CentOS 6 上使用。它可以让您设置质量和文件大小基准。但是,它不允许您调整图像的大小。

我有 5000 张所有文件大小和尺寸的图像,我想缩小到最大宽度和最大文件大小。

例如,我想让所有图像的最大宽度为 500 像素和 50 KB。

如何缩小和优化所有这些图像?

0 投票
1 回答
694 浏览

gulp - Gulp Imagemin 没有完成

这是我的 Gulp 任务:

我正在使用 gulp imagemin 和“imagemin-pngquant”,以及“imagemin-jpegoptim”

在我的源代码中,我有两张图片,一张 jpg 和一张 png。jpg 被压缩,但不是 png。

这是我的 CLI 的样子: 在此处输入图像描述

没有错误,没有完成。

0 投票
1 回答
11296 浏览

jpeg - jpegoptim vs jpegtran vs mozjpeg

我在这件事上发现了两篇略有冲突的博客文章,在这里我总结一下:

更令人困惑的是,这个 Reddit 线程表明 mozjpeg 使用 jpegcrush 中使用的相同算法,并且 jpegcrush 是 jpegtran 的包装器......所以我们绕了一圈?我只能假设那些 Reddit 评论是错误的,有人可以确认吗?

0 投票
1 回答
1145 浏览

pillow - jpegtran 与 libjpeg-turbo、jpegoptim 和 mozjpeg 有什么关系?

据我了解,jpegtran 包含在 libjpeg-turbo 中,并且在使用optimize=True. jpegoptim 使用与 jpegtran 相同的算法,但需要将图像临时保存到磁盘才能对其进行优化,并且 jpegoptim 具有额外的有损压缩能力。

查看 Github 上的 mozjpeg 存储库,有很多对 libjpeg-turbo 的引用,而且它有更多的星星,所以我的问题是它们之间有什么关系?mozjpeg 是 libjpeg-turbo 的一个分支,它可以做任何事情甚至更多吗?即,是否可以禁用 mozjpeg 中的某些功能并最终获得与 libjpeg-turbo 相同的性能和结果?