这是部分图像传输的结果吗?

is this the result of a partial image transfer?

我有从 JPEG 生成缩略图的代码。它从 S3 中提取图像,然后生成缩略图。

大约每 3000 个文件中就有一个最终看起来像这样。它分批发生。高分辨率看起来像这样,它们都被调整为低分辨率。调整大小时不会失败。我可以转到我的 S3 存储桶并查看原始文件确实完好无损。

我用 Ruby 编写了这段代码,并将其全部移植到 clojure,希望它能解决我的问题,但它仍在发生。

什么会导致 JPEG 看起来像这样?

我正在使用像这样的标准图像复制代码

(with-open [in (clojure.java.io/input-stream uri)
                out (clojure.java.io/output-stream file)]
      (clojure.java.io/copy in out))

有什么方法可以检测到 clojure 中的传输不顺利吗?图像魔术?还有其他命令行工具吗?

我猜这是 2 个可能的问题之一(你知道你的代码,所以你可以快速排除一个):

  1. 您 运行 内存不足。如果整批处理同时发生,前几个可能要等到整个过程完成后才会被释放。

  2. 您 运行 没时间了。您可能已达到脚本的最长执行时间。

在处理批次时实施一些日志记录可以告诉您问题何时发生以及当时的整体状态。