-
м. Львів, Україна
-
(044) 222-73-76
-
info@spilka-it.com.ua
Завантаження прайс-листа. Як змінити розмір зображення в Підприємство 8?
Зміст
1. Впровадження системи уніфікації
2. Бібліотека зображень в 1С:Підприємство
Впровадження системи уніфікації
Завантаження прайс-листів або завантаження каталогів - це одвічна проблема для програміста. Кожен такий прайс - це щось нове. Величезна кількість позицій або нелегкий склад. Як бути, якщо картинки лежать на хостингу? А що робити, якщо картинки лежать в папці поруч з Excel, а подальше завантаження прайса повинне переходити на сайт, де замовник старанно вибирав шаблон зображень з певним співвідношенням сторін для зображень? Насправді нас найбільше цікавить той момент, аби наші зображення не розтягували фрейм для відображення, а також не мали вагу яка є поза межами.
Припустимо, що завантаження з 1С:ПідприємствоXLS у нас вже написане. Потрібно впровадити систему уніфікації в наш код. На щастя, 1С:Підприємство вміє працювати з 1С:ПідприємствоCOM-об'єктами, а Windows завбачливо надає зі своєю системою бібліотеку для роботи з зображеннями.
Бібліотека зображень в 1С:Підприємство
Бібліотека називається ImageFile і ImageProcess, постачається разом з вікнами, починаючи з Vista.
Припустимо, нам необхідно мати максимальну висоту фото - 480.
Для початку підключимо наш 1С:Підприємство COM-об'єкт поза циклом:
ImageFile = НовийCOMОб'єкт ( "WIA.ImageFile"); // ImageFile
ImageProcess = НовийCOMОб'єкт ( "WIA.ImageProcess"); // ImageProcess
//Створюємо нову адресу папки, де будуть зберігатися правильні картинки.
Папка = "/ resize";
Припустимо, ми на рядку з локальною айпі-адресою до зображення, вже перенесли його в змінну «АдресаКартинки», де «АдресаКартинки» = "/img/1.jpg".
ImageFile.LoadFile (АдресаДоПапки + АдресаКартинки); // АдресаДоПапки = C: // НаЗавантаження1С:Підприємство
Далі будемо рахувати і порівнювати:
// Якщо всі картинки більш ніж 480 px завширшки, ми будемо зменшувати.
Якщо ImageFile.Height> 480, тоді:
// дізнаємось різницю, на яку потрібно зменшити ширину:
РатіоРозмірів = ImageFile.Height / 480;
// дізнаємось ширину:
КінцеваШирина = ImageFile.Width / РатіоРозмірів;
// створюємо фільтр для картинки:
ImageProcess.Filters.Add (ImageProcess.FilterInfos ( "Resize"). FilterID);
ImageProcess.Filters (1) .Properties ( "MaximumWidth"). Value = КінцеваШирина;
ImageProcess.Filters (1) .Properties ( "MaximumHeight"). Value = 480;
// застосовуємо фільтр:
ImageFile = objImageProcess.Apply (ImageFile);
objImageFile.SaveFile (АдресаДоПапки + Папка + АдресаКартинки);
// завантажуємо в базу даних картинки.
...
Інакше:
// завантажуємо вихідне зображення.
...
Кінець;
Ці бібліотеки зображень дуже зручні для роботи. Природно, можна ускладнити даний код, можна завантажити зображення з інтернету і відразу переробляти в необхідний розмір.
Фахівець компанії ТОВ «» Роман Барабанов.
