HyperlinkedSorlImageField OSError: файл изображения обрезан - PullRequest
0 голосов
/ 21 марта 2019

Я использую этот класс сериализатора для моего API Django-Rest-Framework. (От: https://github.com/dessibelle/sorl-thumbnail-serializer-field)

class HyperlinkedSorlImageField(serializers.ImageField):

    def __init__(self, geometry_string, options={}, *args, **kwargs):
        """
        Create an instance of the HyperlinkedSorlImageField image serializer.
        Args:
            geometry_string (str): The size of your cropped image.
            options (Optional[dict]): A dict of sorl options.
            *args: (Optional) Default serializers.ImageField arguments.
            **kwargs: (Optional) Default serializers.ImageField keyword
            arguments.
        For a description of sorl geometry strings and additional sorl options,
        please see https://sorl-thumbnail.readthedocs.org/en/latest/examples.html?highlight=geometry#low-level-api-examples
        """  # NOQA
        self.geometry_string = geometry_string
        self.options = options

        super(HyperlinkedSorlImageField, self).__init__(*args, **kwargs)

    def to_representation(self, value):
        """
        Perform the actual serialization.
        Args:
            value: the image to transform
        Returns:
            a url pointing at a scaled and cached image
        """
        if not value:
            return None

        image = get_thumbnail(value, self.geometry_string, **self.options)

        try:
            request = self.context.get('request', None)
            return request.build_absolute_uri(image.url)
        except:
            try:
                return super(HyperlinkedSorlImageField, self).to_representation(image)
            except AttributeError:  # NOQA
                return super(HyperlinkedSorlImageField, self).to_native(image.url)  # NOQA
    to_native = to_representation

К сожалению, иногда на моем сервере происходит сбой с этой ошибкой:

OSError: image file is truncated (44 bytes not processed)

Что я могу сделать, чтобы исправить эту проблему? Я думаю, что изображение как-то сломано. Но я могу просмотреть их все без проблем?

...