@MAGistr_MTM
Учусь программировать

Прозрачный фон стает черным. В чем дело?

Доброго времени суток.

Мне нужно импортовать на сайт картинки. Для этого я написал импортер, но когда я импортирую картинку из прозрачным фоном, то на сайте она отображается уже з черным. Если делать вручную, то все норм.

Вот код импортера:
def handle(self, data_list, path_to_images):
        CIP = [row[1].strip() for row in data_list[1:]]
        UPC = [row[0].strip() for row in data_list[1:]]
        NAME = [row[2].strip() for row in data_list[1:]]

        EMPTY_FIELDS = ("-", " ")

        num_items = len(NAME)
        for i, name in enumerate(NAME):
            flag = False

            self.logger.info(
                u"   - Importing image({}/{})".format(i + 1, num_items))

            if name in EMPTY_FIELDS:
                self.logger.error(u'      - No path to image')
                continue

            cip_code = CIP[i]
            upc_code = UPC[i]

            if upc_code != u'':
                .....
                # проверка на наличее продукта

            file_path = os.path.join(path_to_images, name)

            new_img = open(file_path, 'rb').read()
            next_index = 0
            for existing in item.images.all():
                next_index = existing.display_order + 1
                try:
                    if new_img == existing.original.read():
                        self.logger.error(u'      - Image allredy imported')
                        flag = True
                        break
                except IOError:
                    # File probably doesn't exist
                    existing.delete()
                    self.logger.error(u'      - Image did not found')

            if flag:
                continue

            new_file = File(open(file_path, 'rb'))
            im = ProductImage(product=item, display_order=next_index)
            im.original.save(name, new_file, save=False)
            im.save()
            self.logger.debug(u'      - Image added to "%s"' % item)

Вот модель из картинкой:
class AbstractProductImage(models.Model):
    """
    An image of a product
    """
    product = models.ForeignKey(
        'catalogue.Product', related_name='images', verbose_name=_("Product"))
    original = models.ImageField(
        _("Original"), upload_to=settings.OSCAR_IMAGE_FOLDER, max_length=255)
    ...

В чем может быть проблема? Буду очень благодарен за помощь.
  • Вопрос задан
  • 443 просмотра
Решения вопроса 1
@MAGistr_MTM Автор вопроса
Учусь программировать
Проблема была из форматом картинки. В темплейте картинка вставлялась как:
{% thumbnail image.original "440x400" upscale=False as thumb %}

Поскольку format в thumbnail по умолчанию 'JPEG', а .JPEG не поддерживает прозрачность, поэтому и были такие проблемы. Все решилось очень просто:
{% thumbnail image.original "440x400" upscale=False format="PNG" as thumb %}
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы