Как галлюцинации ИИ мешают работе

Клиент поставил задачу — выводить в карточку товара картинки товара в модном формате webp.

Я поискал решения и нашел вот такой код:

// Предположим, у нас есть двоичные данные файла WebP
ДвоичныеДанныеWebP = Новый ДвоичныеДанные("C:\temp\image.webp");
 
// Создаем объект Картинка на основании этих данных
МояКартинка = Новый Картинка(ДвоичныеДанныеWebP);
 
// Сохраняем картинку в формате JPEG
// Платформа сама выполнит перекодирование "на лету"
МояКартинка.Записать("C:\temp\image.jpg", ФорматКартинки.JPEG);

Дополнительно было сказано:

Рассмотрим самый простой и современный метод. Если вы используете платформу версии 8.3.22 или более новую, у нас есть отличная новость: фирма «1С» добавила нативную поддержку WebP. Теперь платформа умеет и читать, и записывать этот формат без использования сторонних программ.

На основании этой статьи я взялся за задачу, решил, что конвертация будет довольно простой, встроенными средствами, без использования конвертеров или внешних компонент.

Увы, на практике все оказалось не так.

У картинки нет метода Записать с такими параметрами. Я попробовал другой код:

ДвоичныеДанныеФайла = Новый ДвоичныеДанные("D:\Users\fixin\Downloads\1.webp");
МояКартинка = Новый Картинка(ДвоичныеДанныеФайла);
МояКартинка.Преобразовать(ФорматКартинки.PNG);
МояКартинка.Записать("D:\Users\fixin\Downloads\1.jpeg");

На что получил ошибку:

Ошибка при вызове метода контекста (Преобразовать)
по причине:
Неизвестный формат картинки

Совершенно случайно я нашел объект ОбрабатываемаяКартинка и решил попробовать преобразовать через нее:

ДвоичныеДанныеФайла = Новый ДвоичныеДанные("D:\Users\fixin\Downloads\1.webp");
МояКартинка = Новый Картинка(ДвоичныеДанныеФайла);
ОбрабатываемаяКартинка = Новый ОбрабатываемаяКартинка(МояКартинка);
ОбрабатываемаяКартинка.ПреобразоватьВОттенкиСерого();
НоваяКартинка = ОбрабатываемаяКартинка.ПолучитьКартинку();
НоваяКартинка.Записать("D:\Users\fixin\Downloads\1.jpeg");

Но увы и тут получил ошибку:

Ошибка при вызове конструктора (ОбрабатываемаяКартинка)
[ОшибкаВоВремяВыполненияВстроенногоЯзыка, ОшибкаИспользованияВстроенногоЯзыка]
по причине:
Ошибка преобразования картинки
по причине:
Ошибка при выполнении операции ImageMagick: 1CV8C.exe: NoDecodeDelegateForThisImageFormat `WEBP' @ error/constitute.c/ReadImage/746

Вот непонятно — зачем 1С вообще подгружает картинку из webp, если ничего сделать с ней не может, даже отобразить. Думаю, тут причина в проприетарности формата, для отображения картинок в этом формате нужно заплатить разработчику формата.

ИИ подсказал, что можно конвертировать через dwebp:

Самый надежный способ в 1С — использовать внешнюю утилиту (например, официальную консольную утилиту dwebp от Google) или COM-объект (например, ImageMagick). Рассмотрим вариант с dwebp.exe, так как он не требует сложной установки.

Я кстати нашел еще генерацию картинки через двумерную матрицу RGB. Но с webp это не сработает, опять же цитирую ответ ИИ:

Напрямую прочитать WEBP встроенными средствами 1С (через ДвоичныеДанные и ЧтениеДанных) без конвертации во что-то другое не получится.

Причина проста: WEBP — это сложнейший формат сжатия (основанный на видеокодеке VP8), где данные пикселей зашифрованы алгоритмами предиктивного кодирования и преобразования Хаффмана. Чтобы превратить его в матрицу, внутри 1С придется написать полноценный декодер изображений на языке 1С, что нецелесообразно и будет работать критически медленно.

Вот так ИИ чуть не обманул меня, хорошо, что я не писал под Fresh, где нельзя использовать командную строку для конвертации.

image_pdfimage_print

fixin

Программирую на 1С с 1999 года. В 1С просто Гений. В 2020 году ушел из офиса на вольные хлеба фриланса. Принимаю заказы.

Вам может также понравиться...

комментария 2

  1. Виталий:

    Скорее это не про галлюцинации ИИ, а про то, что любой совет нужно сверять с документацией и реальным окружением. NoDecodeDelegateForThisImageFormat WEBP — это не про проприетарность WebP, а про то, что конкретная сборка его просто не поддерживает.

    • под конкретной сборкой мы тут подразумеваем конкретный релиз 1с 8.5.*, так что вот так.
      а вот с галлюцинациями ИИ я часто сталкиваюсь.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *