![]() |
![]() |
![]() |
|
ХранилищеЗначения | ☑ | ||
---|---|---|---|---|
0
Struk
03.01.09
✎
17:34
|
Люди добрые, как в реквизите справочника физлица сжать картинку.
Пробовал так не получается. Задача уменьшить объем базы, а то она из-за фотографий превыщает 5 Гб ФизЛицо=Справочники.ФизическиеЛица; РП=ФЛ.ПолучитьОбъект(); ФотоБыло=РП.ОсновноеИзображение; НовФото=Новый ХранилищеЗначения(ФотоБыло,Новый СжатиеДанных(1)); Рп.ОсновноеИзображение=НовФото; РП.Записать(); |
|||
1
ТелепатБот
гуру
03.01.09
✎
17:34
|
||||
2
Struk
03.01.09
✎
17:35
|
БРРР
ФизЛицо=Справочники.ФизическиеЛица; РП=ФЛ.ПолучитьОбъект(); ФотоБыло=РП.ОсновноеИзображение; НовФото=Новый ХранилищеЗначения(ФотоБыло,Новый СжатиеДанных(1)); Рп.ОсновноеИзображение=НовФото; РП.Записать(); |
|||
3
Оллрайт
03.01.09
✎
21:50
|
Можно развить тему?
А если размер фотки УЖЕ мал, тогда ее можно сделать совсем непригодной к употреблению? Наверное надо этот момент контролировать? |
|||
4
IamAlexy
03.01.09
✎
22:19
|
хм. а может нужно перед помещением в хранилище ограничивать размер картинки и вес в килобайтах?
|
|||
5
IamAlexy
03.01.09
✎
22:19
|
+ а разве уровень сжатия не 9 лучше выставить?
|
|||
6
IamAlexy
03.01.09
✎
22:25
|
у себя в конфе нашел такое:
Режим = РежимДиалогаВыбораФайла.Открытие; ТекстЗаголовка = "Выберите файл превью макета"; ДиалогОткрытия = Новый ДиалогВыбораФайла(Режим); ДиалогОткрытия.Каталог = ""; ДиалогОткрытия.МножественныйВыбор = Ложь; ДиалогОткрытия.Заголовок = ТекстЗаголовка; ДиалогОткрытия.Фильтр="Файлы картинок (*.bmp;*.tif;*.gif;*.jpg)|*.bmp;*.tif;*.gif;*.jpg"; ДиалогОткрытия.ИндексФильтра=1; Если ДиалогОткрытия.Выбрать() Тогда ПутьФайла = ДиалогОткрытия.ПолноеИмяФайла; ТекФайл = Новый Файл(ПутьФайла); РазмерФайла = ТекФайл.Размер(); Если РазмерФайла<= Константы.МаксимальныйРазмерПревью.Получить()*1024 Тогда ЗаполнитьПревью(ДиалогОткрытия.ПолноеИмяФайла); Иначе Предупреждение("Размер файла превью превышает "+Константы.МаксимальныйРазмерПревью.Получить()+" кб.",60); КонецЕсли; КонецЕсли; соответственно процедурка заполнитьпревью создает элемент справочника где уже болтается хранилище в хранилище естественно СпрПревью.Хранилище = Новый ХранилищеЗначения(ПревьюКартинка, Новый СжатиеДанных(9)); кстати про сжатие прав был: Новый СжатиеДанных(<Степень сжатия>) Параметры: <Степень сжатия> (необязательный) Тип: Число. Степень сжатия алгоритма Deflation. Целое число в диапазоне -1...9. -1 - степень сжатия по умолчанию. 0 - никакого сжатия, 9 - максимальная степень сжатия. Значение по умолчанию: -1 |
|||
7
IamAlexy
03.01.09
✎
22:26
|
соответственно в константе размер превью в килобайтах...
|
|||
8
Планета Обезьян
04.01.09
✎
00:04
|
(2) +1
|
|||
9
Kuzen
04.01.09
✎
00:16
|
а я думал что сжатие это типа архивация и ее плотность. А не то что в (3) типа сжатие за счет уухудшения качества изображения. Ведь в хранилище может быть не только картинка.
|
|||
10
IamAlexy
04.01.09
✎
00:26
|
(9)так типа архивация и есть.
они картинку сжимают сами прежде чем поместить ее в базу внешними прогами. сжатие хранилища это типа архивации типа зип (вроде чото типа такого на курсах говорили) |
|||
11
Оллрайт
04.01.09
✎
18:45
|
(10) тогда этот метод - не решение задачи (0). Не пробовали архивировать фотки? То-то.. Хоть СжатиеДанных(1) используй, хоть СжатиеДанных(9). Такое мое мнение
|
|||
12
IamAlexy
04.01.09
✎
18:48
|
(11) дык понятное дело что хоть фотки хоть видео хоть мп3 сжимай - пофиг.
но если ты туда тифф воткнешь несжатый :) |
|||
13
Chai Nic
04.01.09
✎
18:56
|
Так в чем проблема? Можно написать обработку, которая вытащит большие картинки из базы, пережмет их с потерей качества (и/или разрешения), и запишет обратно.
|
|||
14
Оллрайт
04.01.09
✎
18:57
|
(13) если есть ссылка на готовую (или подобную) - поделись, плиз.
|
|||
15
Chai Nic
04.01.09
✎
18:59
|
Тут на 10 строчек кода обработка будет - перебор по справочнику и вызов утилиты convert.exe из пакета imagemagic. Напиши сам, это приятно и полезно. :)
|
|||
16
Оллрайт
04.01.09
✎
22:52
|
Сенкс что указал на утилиту... разберусь конечно.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |