#29705: RuntimeError while save webp file to Image-Field
-------------------------------------+-------------------------------------
Reporter: Ji Qu | Owner: Ji Qu
Type: Bug | Status: assigned
Component: Core (Other) | Version: master
Severity: Normal | Resolution:
Keywords: image | Triage Stage:
get_image_dimensions | Unreviewed
Has patch: 0 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------
Description changed by Ji Qu:
Old description:
> Hi,
>
> This is my first time to report a bug for django-project, please feel
> free to give me a hand if I have any non-standard workflow.
>
> I have meet a "RuntimError" while trying to save a webp-image.
>
> I have searched django tickets with following link but no similar ticket
> found:
>
> [https://code.djangoproject.com/search?ticket=on&q=webp+&page=6&noquickjump=1
> search result]
>
> I have made a **online project** to reproduce the "bug".
>
> - [https://github.com/winkidney/django-webp-image-issue-case github-
> repo]
> - [https://travis-ci.org/winkidney/django-webp-image-issue-case travis-
> ci]
>
> Please follow this link to track how this bug happens and how it affects
> my own sites.
>
> A patch is being making to fix the possible "RuntimeError" while saving a
> webp page.
>
> For your information, I will also paste the code which could reproduce
> the bug.
>
> {{{
> import os
>
> from django.core.files.images import get_image_dimensions
> import pytest
>
> FILE_NAME = 'img.webp'
>
> here = os.path.dirname(__file__)
> file_path = os.path.join(here, FILE_NAME)
>
> def test_webp_parse_error():
> """
> Webp file from douban.com, displays in browser well,
> can be opened by PIL but error occurs while use django parse.
> """
> with pytest.raises(
> RuntimeError,
> ) as info:
> with open(file_path, 'rb') as fp:
> get_image_dimensions(file_or_path=fp, close=True)
> assert str(info.value) == 'could not create decoder object'
>
> def test_the_working_way():
> with open(file_path, "rb") as fp:
> from PIL import Image
> image = Image.open(fp)
> print(image.size)
> }}}
>
> Please download the image with these links:
> From douban:
> [https://img3.doubanio.com/view/status/m/public/a606779b213ae14.webp]
> From google: [https://developers.google.com/speed/webp/gallery?hl=zh-CN]
> [https://www.gstatic.com/webp/gallery/4.sm.webp]
>
> Python version:
> Python 3.6.4
>
> Kernel version:
> Linux ubuntu 4.15.0-29-generic #31~16.04.1-Ubuntu SMP Wed Jul 18
> 08:54:04 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
>
> Version of libweb:
>
> ii libwebp-dev:amd64 0.4.4-1
> amd64 Lossy compression of digital photographic images.
> ii libwebp5:amd64 0.4.4-1
> amd64 Lossy compression of digital photographic images.
> ii libwebpdemux1:amd64 0.4.4-1
> amd64 Lossy compression of digital photographic images.
> ii libwebpmux1:amd64 0.4.4-1
> amd64 Lossy compression of digital photographic images.
>
> When the error occurs:
> While I try to save image with webp format, the error occurs.
>
> PS: I don't know how to assign the bug to myself, is there any link or
> doc for me to make my pull request?
New description:
Hi,
This is my first time to report a bug for django-project, please feel free
to give me a hand if I have any non-standard workflow.
I have meet a "RuntimError" while trying to save a webp-image.
I have searched django tickets with following link but no similar ticket
found:
[https://code.djangoproject.com/search?ticket=on&q=webp+&page=6&noquickjump=1
search result]
I have made a **online project** to reproduce the "bug".
- [https://github.com/winkidney/django-webp-image-issue-case github-
repo]
- [https://travis-ci.org/winkidney/django-webp-image-issue-case travis-
ci]
Please follow this link to track how this bug happens and how it affects
my own sites.
A patch is being making to fix the possible "RuntimeError" while saving a
webp page.
For your information, I will also paste the code which could reproduce the
bug.
{{{
import os
from django.core.files.images import get_image_dimensions
import pytest
FILE_NAME = 'img.webp'
here = os.path.dirname(__file__)
file_path = os.path.join(here, FILE_NAME)
def test_webp_parse_error():
"""
Webp file from douban.com, displays in browser well,
can be opened by PIL but error occurs while use django parse.
"""
with pytest.raises(
RuntimeError,
) as info:
with open(file_path, 'rb') as fp:
get_image_dimensions(file_or_path=fp, close=True)
assert str(info.value) == 'could not create decoder object'
def test_the_working_way():
with open(file_path, "rb") as fp:
from PIL import Image
image = Image.open(fp)
print(image.size)
}}}
Please download the image with these links:
From douban:
[https://img3.doubanio.com/view/status/m/public/a606779b213ae14.webp]
From google: [https://developers.google.com/speed/webp/gallery?hl=zh-CN]
[https://www.gstatic.com/webp/gallery/4.sm.webp]
Python version:
Python 3.6.4
Kernel version:
Linux ubuntu 4.15.0-29-generic #31~16.04.1-Ubuntu SMP Wed Jul 18
08:54:04 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
Version of libweb:
ii libwebp-dev:amd64 0.4.4-1
amd64 Lossy compression of digital photographic images.
ii libwebp5:amd64 0.4.4-1
amd64 Lossy compression of digital photographic images.
ii libwebpdemux1:amd64 0.4.4-1
amd64 Lossy compression of digital photographic images.
ii libwebpmux1:amd64 0.4.4-1
amd64 Lossy compression of digital photographic images.
When the error occurs:
While I try to save image with webp format, the error occurs.
--
--
Ticket URL: <https://code.djangoproject.com/ticket/29705#comment:3>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.
--
You received this message because you are subscribed to the Google Groups
"Django updates" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/django-updates/067.65ec5f6943c2a2ec0d1ffaadc643c457%40djangoproject.com.
For more options, visit https://groups.google.com/d/optout.