【问题标题】:Product Images - 'cannot write mode RGBA as JPEG'产品图片 - “无法将模式 RGBA 写入 JPEG”
【发布时间】:2021-03-11 20:38:31
【问题描述】:

我正在尝试开始使用 Django Oscar,但无法正确加载图像。上传图像后,我收到此错误 - “无法将模式 RGBA 写入 JPEG”。错误来自第 11 行:

6 {% block product %}
7       <article class="product_pod">
8           {% block product_image %}
9               <div class="image_container">
10                  {% with image=product.primary_image %}
11                      {% oscar_thumbnail image.original "x155" upscale=False as thumb %} <!-- this line throwing error -->
12                      <a href="{{ product.get_absolute_url }}">
13                          <img src="{{ thumb.url }}" alt="{{ product.get_title }}" class="thumbnail">
14                      </a>
15                  {% endwith %}
16              </div>
17          {% endblock %}

这是因为我没有正确安装 libjpeg 吗?我在 Windows 上运行它,但我仍然不清楚我是否正确安装了 libjpeg。如果这是我的问题,下载后我需要对那个包做什么?

如果我能提供更多有用的信息,请告诉我。

【问题讨论】:

  • 问题似乎是原始图像包含 JPEG 格式不支持的 Alpha 层或透明层。我不确定您使用的是哪个 Oscar Thumbnail 扩展,所以我不知道在哪里查看扩展是否支持预先将图像转换为 RGB 模式。一种可能的解决方法是确保使用此处的代码将所有适用的图像转换为 RGB 模式:stackoverflow.com/a/49255449/42346,但如果您不断获得新图像,这可能不是可持续的解决方法。
  • 我只是使用默认的 sorl 缩略图。也许我会尝试不同的缩略图扩展,看看是否能让我有所收获。有什么提示或事情我可以尝试解决这个问题吗?

标签: django libjpeg django-oscar


【解决方案1】:

我不确定这是否是正确的答案,但将 django-oscar 缩略图扩展名更改为 Easy Thumbnails 似乎暂时解决了我的问题。希望这可以帮助其他可能遇到问题的人。 Pypi site for easy thumbnails

【讨论】:

    【解决方案2】:

    django-oscar 使用sorl-thumbnail 生成缩略图。拇指的默认图像格式是 jpeg。但是 jpeg 不支持透明度,因此如果您的源图像具有与 jpeg 不兼容的颜色模型,则必须丢弃 alpha 通道(透明度)或创建与源图像具有相同文件类型的缩略图。这可以通过在 settings.py 中设置THUMBNAIL_PRESERVE_FORMAT = True 来完成

    THUMBNAIL_PRESERVE_FORMAT

    默认值:假

    如果为 True,输入文件的格式将被保留。如果为假, 将使用 THUMBNAIL_FORMAT。

    https://sorl-thumbnail.readthedocs.io/en/latest/reference/settings.html#thumbnail-preserve-format

    【讨论】:

      猜你喜欢
      • 2018-06-23
      • 1970-01-01
      • 1970-01-01
      • 2013-05-19
      • 1970-01-01
      • 2019-03-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多