Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Неназначенных незавершенных заказов: 2, свеженьких 1
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Сжатие картинок          
Bernet Подменю пользователя
сообщение 16.12.14, 10:19
Сообщение #1

Ветеран
Иконка группы
Группа: Местный
Сообщений: 858
Из: Місто щасливих людей
Спасибо сказали: 319 раз
Рейтинг: 0

Добрый день. Есть база 1С (УПП) и мобильное приложение Агент+, необходимо выгружать картинки из базы 1С на Агент+, выгрузку сделал, но файл с выгрузкой получается примерно 30 Мб, что есть не очень удобно, учитывая что 29 Мб из них весят картинки. Возник вопрос: можно ли как-то при выгрузке картинок изменять их размер. Большинство картинок весят немного (примерно 30 Кб) но есть и побольше (до 1 Мб) - вот их и хочу уменьшить при выгрузке. Готовые обработки по ресайзу картинок приветствуются smile.gif


Signature
Дописываю конфигурации на платформе 8.х.
- Управление торговым предприятием для Украины
- Управление производственным предприятием для Украины
- Управление небольшой фирмой для Украины
- Бухгалтерия для Украины;
- Общепит для Украины
- Ресторан (Рарус)
- Розница

Vofka Подменю пользователя
сообщение 16.12.14, 11:03
Сообщение #2

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13955
Из: Киев
Спасибо сказали: 4519 раз
Рейтинг: 3641.2

Конкретно по теме не подскажу (как сжать картинку средствами 1С). Но может имеет смысл подумать над тем, чтобы уменьшить размер исходной картинки: сжать какой-то программой, конвертировать в какой-то другой формат и т.п.

Спасибо сказали: Bernet,

Bernet Подменю пользователя
сообщение 16.12.14, 11:22
Сообщение #3

Ветеран
Иконка группы
Группа: Местный
Сообщений: 858
Из: Місто щасливих людей
Спасибо сказали: 319 раз
Рейтинг: 0

Да, такой вариант тоже рассматриваю, просто хотелось бы 1 раз сделать и забыть, ведь пользователь не будет заморачиваться такой ерундой - он загрузит картинку и все. А я как существо ленивое не хочу постоянно следить за размером выгружаемого архива wink.gif Думал может можно при выгрузке определять размер файла и если он, например, больше 100 Кб - пропорционально уменьшать размеры картинки.


Signature
Дописываю конфигурации на платформе 8.х.
- Управление торговым предприятием для Украины
- Управление производственным предприятием для Украины
- Управление небольшой фирмой для Украины
- Бухгалтерия для Украины;
- Общепит для Украины
- Ресторан (Рарус)
- Розница

python Подменю пользователя
сообщение 16.12.14, 11:49
Сообщение #4

Говорящий
***
Группа: Пользователи
Сообщений: 83
Из: Киев
Спасибо сказали: 13 раз
Рейтинг: 0

Это каждый раз при выгрузке проверять размер картинки и пережимать ее? И делать это, скорее всего, сторонней прогой.
Может, имеет смысл хранить копию картинки для мобильного приложения?

Bernet Подменю пользователя
сообщение 16.12.14, 12:20
Сообщение #5

Ветеран
Иконка группы
Группа: Местный
Сообщений: 858
Из: Місто щасливих людей
Спасибо сказали: 319 раз
Рейтинг: 0

Картинки добавляют обычные пользователи - как я писал выше, они проверять размер не будут, поэтому хранить копии не вижу смысла поскольку пользователь все равно добавит здоровенную картинку, которую нужно уменьшить, что возвращает меня к изначальному вопросу - "Как можно уменьшить картинку программно?". Ну и плюс база так разрастется (номенклатуры много - примерно 5000) - все таки граф. информация жрет конкретно.


Signature
Дописываю конфигурации на платформе 8.х.
- Управление торговым предприятием для Украины
- Управление производственным предприятием для Украины
- Управление небольшой фирмой для Украины
- Бухгалтерия для Украины;
- Общепит для Украины
- Ресторан (Рарус)
- Розница

Vofka Подменю пользователя
сообщение 16.12.14, 12:23
Сообщение #6

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13955
Из: Киев
Спасибо сказали: 4519 раз
Рейтинг: 3641.2

Ещё один "не прямой" путь: ограничить размер картинки на уровне 1С, т.е. в момент загрузки в картинки в 1С проверять, чтоб картинка не превышала определенный размер.

python Подменю пользователя
сообщение 16.12.14, 14:09
Сообщение #7

Говорящий
***
Группа: Пользователи
Сообщений: 83
Из: Киев
Спасибо сказали: 13 раз
Рейтинг: 0

Bernet, я и не предлагал пользователей заставлять сохранять две копии (хотя тоже имеет право на жизнь такой подход).
При добавлении картинки добавить дополнительный обработчик с проверкой размера фото, и сохранением миниатюры для мобильного приложения.
Думаю есть консольные утилиты, которые помогут это сделать программно.

Самый простой способ: [необходимо зарегистрироваться для просмотра ссылки]
И еще консольный метод: [необходимо зарегистрироваться для просмотра ссылки]

Спасибо сказали: Bernet,

Bernet Подменю пользователя
сообщение 16.12.14, 14:13
Сообщение #8

Ветеран
Иконка группы
Группа: Местный
Сообщений: 858
Из: Місто щасливих людей
Спасибо сказали: 319 раз
Рейтинг: 0

спасибо, попробую


Signature
Дописываю конфигурации на платформе 8.х.
- Управление торговым предприятием для Украины
- Управление производственным предприятием для Украины
- Управление небольшой фирмой для Украины
- Бухгалтерия для Украины;
- Общепит для Украины
- Ресторан (Рарус)
- Розница

RedCat77 Подменю пользователя
сообщение 16.12.14, 17:57
Сообщение #9

Завсегдатай
****
Группа: Пользователи
Сообщений: 141
Из: Киев
Спасибо сказали: 22 раз
Рейтинг: 22.3

Из личного опыта (фрагмент кода):

    Маска = "*.jpg";
    МассивФайлов = Новый Массив;
    МассивФайлов = НайтиФайлы(ПапкаИсточник, Маска);
    
    // Создаем объект
    ФайлКартинка = Новый COMОбъект("WIA.ImageFile");

    Для Каждого Картинка Из МассивФайлов Цикл
        ФайлКартинка.LoadFile(Картинка.ПолноеИмя);
        
        Состояние("Картинка: " + Картинка.Имя);
        
        //Сообщить("Картинка: " + Картинка.Имя);
        //Сообщить("    Расширение файла: " + ФайлКартинка.FileExtension);
        //Сообщить("    Ширина: " + ФайлКартинка.Width);
        //Сообщить("    Высота: " + ФайлКартинка.Height);
        //Сообщить("    Размер: " + Окр(ФайлКартинка.FileData.Count / 1024, 2) + " Кб");
        
        ФайлПрогресс = Новый COMОбъект("WIA.ImageProcess");
        ФайлПрогресс.Filters.Add(ФайлПрогресс.FilterInfos("Scale").FilterID);
        
        Если ФайлКартинка.Width > ФайлКартинка.Height Тогда
            Если ШиринаРис > ВысотаРис Тогда
                ФайлПрогресс.Filters(1).Properties("MaximumWidth").Value = ШиринаРис;
                ФайлПрогресс.Filters(1).Properties("MaximumHeight").Value = ВысотаРис;
            Иначе
                ФайлПрогресс.Filters(1).Properties("MaximumWidth").Value = ВысотаРис;
                ФайлПрогресс.Filters(1).Properties("MaximumHeight").Value = ШиринаРис;
            КонецЕсли;
        ИначеЕсли ФайлКартинка.Width < ФайлКартинка.Height Тогда
            Если ШиринаРис > ВысотаРис Тогда
                ФайлПрогресс.Filters(1).Properties("MaximumWidth").Value = ВысотаРис;
                ФайлПрогресс.Filters(1).Properties("MaximumHeight").Value = ШиринаРис;
            Иначе
                ФайлПрогресс.Filters(1).Properties("MaximumWidth").Value = ШиринаРис;
                ФайлПрогресс.Filters(1).Properties("MaximumHeight").Value = ВысотаРис;
            КонецЕсли;
        Иначе
            ФайлПрогресс.Filters(1).Properties("MaximumWidth").Value  = ШиринаРис;
            ФайлПрогресс.Filters(1).Properties("MaximumHeight").Value = ШиринаРис;
        КонецЕсли;
        
        //ФайлПрогресс.Filters(1).Properties("MaximumWidth").Value = ШиринаРис;
        //ФайлПрогресс.Filters(1).Properties("MaximumHeight").Value = ВысотаРис;
        ФайлПрогресс.Filters(1).Properties("PreserveAspectRatio").Value = Ложь;

        ФайлКартинка = ФайлПрогресс.Apply(ФайлКартинка);

        ВыбКартинка = Новый Файл(ПапкаПриемник + "\" + Картинка.Имя);
        Если ВыбКартинка.Существует() Тогда
            УдалитьФайлы(ПапкаПриемник + "\" + Картинка.Имя);
        КонецЕсли;
        ФайлКартинка.SaveFile(ПапкаПриемник + "\" + Картинка.Имя);
        
    КонецЦикла;


Дальше нужна фантазия для обвязки кода.
У COM объекта куча методов, можно поэксперементировать


 i 

Выделяем код
 


Сообщение отредактировал Vofka - 16.12.14, 17:58

Спасибо сказали: Bernet, Sarm,

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 19.04.24, 6:52
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!