Определение размера картинок
По теме из базы знаний
- Функция для определения размера данных для 1С: Предприятия 8.Х
- Размеры картинок и их значение
- Сжатие картинок в хранилище дополнительной информации для УТ 10.3 и УПП
- Справка о среднем заработке для определения размера пособия по безработице (стипендии)
- Поиск и удаление битых картинок номенклатуры. УТ 11, КА 2, ERP
Ответы
В избранное
Подписаться на ответы
Сортировка:
Древо развёрнутое
Свернуть все
1. Насколько я помню это Maljaev'a а не Душелова
2. В принципе не настолько это надо чтобы внешнюю компоненту привязывать
3. Сама картинка лежит в файлах, а не в базе
суть в том что есть маленькая картинка на форме и есть большая картинка на обработке в которую по даблклику передается исходная картинка. Хотелось подгонять масштабы формы под оригинальный размер картинки или картинку под разрешение при условии того что она имеет больший размер.
2. В принципе не настолько это надо чтобы внешнюю компоненту привязывать
3. Сама картинка лежит в файлах, а не в базе
суть в том что есть маленькая картинка на форме и есть большая картинка на обработке в которую по даблклику передается исходная картинка. Хотелось подгонять масштабы формы под оригинальный размер картинки или картинку под разрешение при условии того что она имеет больший размер.
примерно так:
ФЭК - каталог с картинкой
ФЭ - название картинки
Код |
---|
objShellApp=СоздатьОбъект("Shell.Application");
objFolder=objShellApp.NameSpace(СокрЛП(ФЭК));
objItem=objFolder.ParseName(СокрЛП(ФЭ));
размеры=objFolder.GetDetailsOf(objItem,26);
р = Найти(размеры, "x");
ширина = Число(Лев(размеры, р - 1));
высота = Число(Сред(размеры, р + 2));
Показать полностью |
ФЭК - каталог с картинкой
ФЭ - название картинки
речь именно о пикселах
в принципе задачку решил благодаря Mucmepukc
чуть позже появится время выложу то что получилось, а получилось интересно - если разрешение картинки меньше разрешения экрана, то она выводится в оригинальном разрешении, если больше то выполняется масштабирование в 90% от разрешения оргинала с сохранением пропорция
в принципе задачку решил благодаря Mucmepukc
чуть позже появится время выложу то что получилось, а получилось интересно - если разрешение картинки меньше разрешения экрана, то она выводится в оригинальном разрешении, если больше то выполняется масштабирование в 90% от разрешения оргинала с сохранением пропорция
Решение:
В форме элемента сотрудники объект картинка и кнопка показать фото, вызывающая одноименную процедуру
предварительно при выборе картинки создается копия картинки "Сотрудники-" + Код + ".jpg"
Обработка Отобразить Картинку
На форме объект картинка и кнопка закрывающая окошко, так как формексом урезана верхняя панель с кнопками закрытия/сворачивания.
Детально расписывать не буду - основные нужные комментарии есть.
В форме элемента сотрудники объект картинка и кнопка показать фото, вызывающая одноименную процедуру
предварительно при выборе картинки создается копия картинки "Сотрудники-" + Код + ".jpg"
Код |
---|
//_____________________________________________________________________________
Процедура ПоказатьФото()
Конт = "Сотрудники-" + Код + ".jpg";
ОткрытьФормуМодально("Отчет.ОтобразитьКартинку", Конт);
КонецПроцедуры // ПоказатьФото
Показать полностью |
Обработка Отобразить Картинку
На форме объект картинка и кнопка закрывающая окошко, так как формексом урезана верхняя панель с кнопками закрытия/сворачивания.
Детально расписывать не буду - основные нужные комментарии есть.
Код |
---|
Перем Ширина;
Перем Высота;
Перем ИмяФайла;
Перем Окно;
Перем разрШирина;
Перем разрВысота;
Перем ОпределилиРазмерКартинки;
Перем АтрибутФормыКартинка;
//_____________________________________________________________________________
Функция ОпределитьРазмерКартинки()
Ширина ="";
Высота = "";
Попытка
objShellApp = СоздатьОбъект("Shell.Application");
objFolder = objShellApp.NameSpace(глКаталогКартинок);
objItem = objFolder.ParseName(СокрЛП(ИмяФайла));
Размеры = objFolder.GetDetailsOf(objItem, 26);
//пример Шир х Выс
Размеры = СокрЛП(Размеры);
//уберем пробелы
Размеры = СтрЗаменить(Размеры, " ", "");
Ширина = Число(Лев(Размеры, Найти(Размеры, "x") - 1));
Высота = Число(Сред(Размеры, Найти(Размеры, "x") + 1));
Возврат 1;
Исключение
Возврат 0;
КонецПопытки;
КонецФункции // ОпределитьРазмерКартинки
//_____________________________________________________________________________
Процедура ПриОткрытии()
ИмяФайла = Форма.Параметр;
ОпределилиРазмерКартинки = 0;
Если ПустоеЗначение(ИмяФайла) = 1 Тогда
//интерактивный запуск
Предупреждение("Это служебная обработка и отдельно не используется",60);
СтатусВозврата(0);
Возврат;
КонецЕсли;
Путь = глКаталогКартинок + ИмяФайла;
Если ФС.СуществуетФайл(Путь) = 0 Тогда
СтатусВозврата(0);
Возврат;
КонецЕсли;
Если ОпределитьРазмерКартинки() = 0 Тогда
//не определить размер картинки
картОбъект.РежимРисования(3);
Иначе
ОпределилиРазмерКартинки = 1;
Окно = СоздатьОбъект("Окна");
Окно.ПолучитьРазрешение(разрШирина, разрВысота);
АтрибутФормыКартинка = СоздатьОбъект("АтрибутФормы");
АтрибутФормыКартинка.УстановитьАтрибут(Форма,"картОбъект");
КонецЕсли;
картОбъект.Загрузить(Путь);
КонецПроцедуры // ПриОткрытии
//_____________________________________________________________________________
Процедура ПослеОткрытия()
Если ОпределилиРазмерКартинки = 0 Тогда
СтатусВозврата(0);
Возврат;
КонецЕсли;
Окно.ЦентрироватьОкно(Форма);
Если (Ширина * 1.2 > разрШирина) или (Высота * 1.2 > разрВысота) Тогда
//размер картинки больше разрешения экрана
//найдем масштаб по ширине картинки относительно ширины разрешения
//к примеру ширина картинки составляет 150% от ширины разрешения
ШиринаМасштаб = (100 * Ширина) / разрШирина;
//найдем масштаб по высоте картинки относительно высоты разрешения
//к примеру высота картинки составляет 150% от высоты окна 1С
ВысотаМасштаб = (100 * Высота) / разрВысота;
//определим какой "масштаб больше" и по нему и будем масштабировать картинку
Масштаб = ?(ШиринаМасштаб > ВысотаМасштаб, ШиринаМасштаб, ВысотаМасштаб);
//масштабирование сделаем 90% относительно разрешения
ШиринаМасштаб = (Ширина * 90) / Масштаб;
ВысотаМасштаб = (Высота * 90) / Масштаб;
АтрибутФормыКартинка.УстановитьКоординаты(0,0, ШиринаМасштаб, ВысотаМасштаб);
картОбъект.РежимРисования(3);
ШиринаОкна = ШиринаМасштаб + 5;
ВысотаОкна = ВысотаМасштаб + 5;
Иначе
//размер картинки меньше разрешения экрана
АтрибутФормыКартинка.УстановитьКоординаты(0,0, Ширина, Высота);
картОбъект.РежимРисования(2);
ШиринаОкна = Ширина + 5;
ВысотаОкна = Высота + 5;
КонецЕсли;
Окно.РазмерОкна(Форма, ШиринаОкна, ВысотаОкна);
Окно.СтильОкна(Форма, 1);
Форма.кнЗакрыть.Видимость(1);
КонецПроцедуры // ПослеОткрытия()
Показать полностью |
Вакансии
Аналитик 1С / Бизнес-аналитик
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)