Групповое изменение формата картинок с PNG на JPG

21.01.22

База данных - Инструменты администратора БД

Простой способ массово менять формат картинок с помощью 1С и программы Irfanview.

Файлы

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование Скачано Купить файл
Групповое изменение формата картинок с PNG на JPG:
.epf 8,39Kb
9 2 500 руб. Купить

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой

Вы можете заказать платную доработку или адаптацию этой разработки под вашу конфигурацию на «Бирже заказов».

  • Поиск от одного разработчика до ИТ-команд под проект.
  • Обмен любыми контактами разрешён.
  • 0% комиссии, допускаются расчёты напрямую.

У клиента имеется УТ 10.3, ответственные лица сохраняли картинки номенклатуры в базу невзирая на формат. 10000 позиций выгружались на сайт. Картинки, сохраненные в PNG, могут иметь прозрачность. Значительную часть картинок с прозрачностью сайт отображал как изображения с чёрным фоном, что не удовлетворяло заказчика. Была поставлена задача пересохранить картинки с белым фоном в формате JPG.

Пришлось ознакомиться с сайтом, http://tc-image.3dn.ru/Help/Other/irfanviewcmdline.htm, откуда были взят ключ для изменения формата картинок.

По ссылке ниже была скачана и установлена программа irfanview https://www.irfanview.com/

С помощью быстро набросанного кода, картинки выгружались из справочника Хранилище дополнительной информации на диск. Затем Irfanview менял их формат. После чего картинки записывались обратно в базу.

Было замечено, что Irfanview не успевает записать на диск часть картинок в новом формате, до того как 1с попытается записать картинку в базу. Была применена задержка, для ожидания работы Irfanview из публикации: //infostart.ru/public/706204/

Замечено, что Irfanview разбирается в том, что файл картинки имеет неправильное расширение, даже если файл картинки имеет расширение PNG, а формат JPG просмотрщик открывает её и выдаёт об этом сообщение. То есть, нет необходимости контролировать, в каком формате было изначально сохранено в базе изображение. Если Irfanview конвертирует в JPG, то неважно, что файл картинки имеет неправильное расширение, итоговый файл JPG будет рабочим. По умолчанию Irfanview отображает прозрачность как чёрный цвет, соответственно и картинки JPG сохраняет с чёрным фоном, вместо прозрачности. Чтобы поменять цвет отображения прозрачности надо перейти в меню просмотрщика по пути Options > Properties/Settings > Viewing > Main window color

Естественно, все манипуляции надо делать, имея проверенную резервную копию базы.

Насколько я заметил, изменение формата PNG в JPG значительно уменьшает размер картинки, что может влиять на объём базы. Видимого уменьшения качества изображения замечено не было.

Механизм мало тестировался для изменения других форматов картинок, возможно, есть нюансы. 

1. Создаём резервную копию базы.

2. Проверяем резервную копию базы.

3. Скачиваем обработку и Irfanview.

4. Меняем цвет отображения прозрачности в Irfanview (если нужно).

5. Заполняем поля обработки:

  • "Путь к каталогу" - любой каталог, к которому есть доступ (лучше на быстром диске).
  • "Расширение для сохранения" - если знаете в каком формате хранятся картинки в базе (по умолчанию можно оставить PNG)
  • "Расширение итогового формата" - расширение формата, в который хотите конвертировать изображения.
  • "Группа номенклатуры" - группа номенклатуры в базе, которая содержит картинки нуждающиеся в смене формата.
  • "Задержка" - количество секунд, необходимых для сохранения файла на диск с новым расширением. 

6. Жмём Выполнить.

Процедура КнопкаВыполнитьНажатие(Кнопка)
Запрос = Новый Запрос;
	Запрос.Текст = 
		"ВЫБРАТЬ
		|	ВЫРАЗИТЬ(ХранилищеДополнительнойИнформации.Объект КАК Справочник.Номенклатура).Код КАК КодНоменклатуры,
		|	ВЫРАЗИТЬ(ХранилищеДополнительнойИнформации.Объект КАК Справочник.Номенклатура).Представление КАК ПредставлениеНоменклатуры,
		|	ХранилищеДополнительнойИнформации.Ссылка КАК Ссылка
		|ИЗ
		|	Справочник.ХранилищеДополнительнойИнформации КАК ХранилищеДополнительнойИнформации
		|ГДЕ
		|	ВЫБОР
		|			КОГДА &ПараметрГруппа
		|				ТОГДА ВЫРАЗИТЬ(ХранилищеДополнительнойИнформации.Объект КАК Справочник.Номенклатура).Родитель В ИЕРАРХИИ (&РодительГруппаНоменклатурыСклад)
		|			ИНАЧЕ (ВЫРАЗИТЬ(ХранилищеДополнительнойИнформации.Объект КАК Справочник.Номенклатура)) = &РодительГруппаНоменклатурыСклад
		|		КОНЕЦ
		|	И ХранилищеДополнительнойИнформации.ВидДанных = &ВидДанныхДополнительнойИнформации";
	
	Запрос.УстановитьПараметр("ПараметрГруппа",?(ГруппаНоменклатуры.ЭтоГруппа,Истина,Ложь));
	Запрос.УстановитьПараметр("РодительГруппаНоменклатурыСклад",ГруппаНоменклатуры);
	Запрос.УстановитьПараметр("ВидДанныхДополнительнойИнформации", Перечисления.ВидыДополнительнойИнформацииОбъектов.Изображение);

	
	РезультатЗапроса = Запрос.Выполнить();
	
	Выборка = РезультатЗапроса.Выбрать();
	Сообщить("Найдено "+ Выборка.Количество()+ "элементов.");
	СчетчикЭлементовСправочника = 0;
	Пока Выборка.Следующий() Цикл
		
	ОбъектХранилище = Выборка.Ссылка.ПолучитьОбъект();
	Картинка = Выборка.Ссылка.Хранилище.Получить();
	Сообщить("Будем перезаписывать: " +Выборка.ПредставлениеНоменклатуры+"/"+Выборка.КодНоменклатуры);	
	Попытка
		СтрокаПутиФайла =  ПутьККаталогу+"\ФайлПерезаписи."+РасширениеДляСохранения;
		Картинка.Записать(СтрокаПутиФайла);                                     
		Ирфин = Новый Файл("C:\Program Files\IrfanView\i_view64.exe");
		ЗапуститьПриложение("" + Ирфин.ПолноеИмя +" " + СтрокаПутиФайла+ " /convert="+Лев(СтрокаПутиФайла, СтрДлина(СтрокаПутиФайла)-3)+РасширениеИтоговогоФормата);
//Задержка, чтобы файл успел сохраниться на диск 	
    	ЗадержкаСекунд = Задержка;
		Сигнатура = Формат(ТекущаяДата(), "ДФ=yyyyMMddhhmmss");
		ПутьСкрипта = КаталогВременныхФайлов()+"SleepScript"+Сигнатура+".vbs";
		СкриптФайл = Новый ТекстовыйДокумент;
		СкриптФайл.ДобавитьСтроку("WScript.Sleep("+Формат(ЗадержкаСекунд*1000, "ЧГ=0")+")");
		СкриптФайл.Записать(ПутьСкрипта, КодировкаТекста.OEM);
		WSHShell = Новый COMОбъект("WScript.Shell");
		WSHShell.Run("wscript.exe """+ПутьСкрипта+"""", 0, 1);
		УдалитьФайлы(ПутьСкрипта);
//Задержка, чтобы файл успел сохраниться на диск 		
		ОбъектХранилище.Хранилище = Новый ХранилищеЗначения(Новый Картинка(Лев(СтрокаПутиФайла, СтрДлина(СтрокаПутиФайла)-3)+РасширениеИтоговогоФормата));
		ОбъектХранилище.Записать();

		УдалитьФайлы(СтрокаПутиФайла);
		УдалитьФайлы(Лев(СтрокаПутиФайла, СтрДлина(СтрокаПутиФайла)-3)+"jpg");

	Исключение
		Предупреждение(ОписаниеОшибки());
	КонецПопытки;
	СчетчикЭлементовСправочника = СчетчикЭлементовСправочника +1;

	КонецЦикла;
Сообщить ("Перезаписали "+СчетчикЭлементовСправочника+" изображений.")
КонецПроцедуры

Обработка только для УТ 10.3, проверена на релизе 10.3.8.9.

Вся новизна публикации только 2 строках:

Ирфин = Новый Файл("C:\Program Files\IrfanView\i_view64.exe");
		ЗапуститьПриложение("" + Ирфин.ПолноеИмя +" " + СтрокаПутиФайла+ " /convert="+Лев(СтрокаПутиФайла, СтрДлина(СтрокаПутиФайла)-3)+РасширениеИтоговогоФормата);

Обработка тестировалась на УТ 10.3.8.9 и УТ 10.3.64.3

Вступайте в нашу телеграмм-группу Инфостарт

Картинка формат групповое изменение чёрный фон прозрачность PNG JPG

См. также

Инструментарий разработчика Чистка данных Свертка базы Инструменты администратора БД Системный администратор Программист Руководитель проекта 1С:Предприятие 8 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Россия Платные (руб)

Инструмент представляет собой обработку для проведения свёртки или обрезки баз данных. Работает на ЛЮБЫХ конфигурациях (УТ, БП, ERP, УНФ, КА и т.д.). Поддерживаются серверные и файловые базы, управляемые и обычные формы. Может выполнять свертку одновременно в несколько потоков. А так же автоматически, без непосредственного участия пользователя. Решение в Реестре отечественного ПО

24900 руб.

20.08.2024    65239    344    169    

303

Инструменты администратора БД Инструментарий разработчика Роли и права Программист 1С:Предприятие 8 1C:Бухгалтерия Россия Платные (руб)

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

17000 руб.

10.11.2023    24696    93    42    

101

Инструменты администратора БД Роли и права Системный администратор Программист Пользователь 1С 8.3 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:Документооборот 1С:Зарплата и кадры государственного учреждения 3 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Зарплата и Управление Персоналом 3.x 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Платные (руб)

Роли… Вы тратите много времени и сил на подбор ролей среди около 2400 в ERP или 1500 в Рознице 2, пытаясь понять какими правами они обладают? Вы все время смотрите права в конфигураторе или отчетах чтоб создать нормальные профили доступа? Вы хотите наглядно видеть какие права дает профиль и редактировать все в простом виде? А может хотите просто указать подсистему и дать права на просмотр и добавление на объекты и не лезть в дебри прав и чтоб обработка сама подобрала нужные роли? Все это теперь стало возможно! Обновление от 17.04.2026, версия 1.4.1, работает в 1С:ФРЕШ!

24400 руб.

06.12.2023    22140    80    10    

113

Файловый обмен (TXT, XML, DBF), FTP Поиск данных Инструменты администратора БД Корректировка данных Системный администратор Программист 1С:Предприятие 8 1C:Бухгалтерия 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Платные (руб)

Данная обработка позволит Вам легко и просто, а главное - быстро, выполнить сравнение данных между ЛЮБЫМИ базами (и РИБ, по правилам конвертаций) по контрольным суммам выбранных объектов баз 1С, работающих на платформах 8.3 и выше. Удобный и понятный интерфейс в виде "мастера". Высокая скорость сравнения достигается за счет специального алгоритма расчета контрольной суммы объекта/записи и сравнения по данным суммам объектов 2х баз через файл. Имеется возможность выбора реквизитов, по которым система будет сравнивать объекты. Сравнение количества записей в движениях документов, возможность сравнивать данные по правилам конвертации и не только! Выбор объектов конфигурации для КАЖДОГО узла в отдельности с индивидуальным отбором для каждого объекта конфигурации, работа с FTP, сохранение или загрузка настроек, сохранение или загрузка результата сравнения, регистрация на обмен объекта и его движений. (Обновление от 12.11.2024, версия 2.2-2.5)

24400 руб.

27.10.2017    45480    31    13    

49

Чистка данных Инструменты администратора БД Администрирование 1С 8.3 1С:Документооборот 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Управление холдингом 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Платные (руб)

Решение представляет собой набор из 6 обработок для 1С по удалению организаций и справочников из базы по фильтрам, документов по фильтрам, универсальное сжатие данных, очистка битых движений регистратора, удаление устаревших регистров сведений, удаление устаревших документов "Электронное письмо входящее" и "Электронное письмо исходящее"

23999 руб.

20.02.2026    1002    1    0    

4

Инструменты администратора БД Системный администратор 1С:Предприятие 8 1С:Комплексная автоматизация 1.х 1С:Управление производственным предприятием Платные (руб)

Конфигурация Комплексная автоматизация 1.1 (и УПП 1.3 тоже) хранит файлы и изображения в справочнике Хранилище дополнительной информации в реквизите Хранилище типа ХранилищеЗначений. Та же история с ВложениямиЭлектроннойПочты. Но при этом присоединенные файлы в Электронном документообороте хранит в томах на диске. Эта доработка позволяет использовать стандартный механизм хранения файлов, изображений и вложений электронных писем в томах на диске. При этом можно разделить тома хранения по объектам конфигурации.

5490 руб.

10.11.2015    66039    102    59    

84
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. RWS88 1 16.03.23 13:28 Сейчас в теме
Спасибо за обработку!
2. TokarevV 37 16.03.23 13:47 Сейчас в теме
(1) Пожалуйста!
Плюсецкий мне поставьте))
Для отправки сообщения требуется регистрация/авторизация