• м. Львів, Україна
  • (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 (АдресаДоПапки + Папка + АдресаКартинки);

// завантажуємо в базу даних картинки.

...

Інакше:

// завантажуємо вихідне зображення.

...

Кінець;

 

Ці бібліотеки зображень дуже зручні для роботи. Природно, можна ускладнити даний код, можна завантажити зображення з інтернету і відразу переробляти в необхідний розмір. 

 

Фахівець компанії ТОВ «» Роман Барабанов.

 

 

ПРО НАС
Українська Спілка Автоматизаторів Бізнесу. Програми На Базі Підприємство 8, BAS.