Не переворачивает фото в мобильном приложении
Есть такой код в мобильном приложении
Всё работает нормально кроме одного. Фото всегда имеет одну и ту же ориентацию, как бы телефон не вертели. Всегда горизонтально и никак иначе. Кто сталкивался? В чем может быть проблема?
&НаКлиенте
Процедура СделатьФото(ХранениеФото)
#Если МобильноеПриложениеКлиент Тогда
кат = КаталогДокументов();
ФайлКартинки = кат+"MobilePhoto_" + Строка(Новый УникальныйИдентификатор)+"jpg";
ФайлКартинки = "file://" + ФайлКартинки;
НовВз = Новый ЗапускПриложенияМобильногоУстройства("android.media.action.IMAGE_CAPTURE");
НовВз.ДополнительныеДанные.Добавить("output",ФайлКартинки,"Uri");
Рез = НовВз.Запустить(Истина);
ФайлКартинки = СтрЗаменить(ФайлКартинки,"file://","");
Файл = Новый Файл(ФайлКартинки);
Если Файл.Существует() Тогда
АдресФайлаВоВременномХранилище = ПоместитьВоВременноеХранилище(Новый ДвоичныеДанные(ФайлКартинки));
ЗаполнитьФотоНаСервере_тчФайлы(АдресФайлаВоВременномХранилище, ХранениеФото);
КонецЕсли;
#КонецЕсли
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьФотоНаСервере_тчФайлы(АдресФайлаВоВременномХранилище, ХранениеФото)
ДвоичныеДанные = ПолучитьИзВременногоХранилища(АдресФайлаВоВременномХранилище);
Если Не ЗначениеЗаполнено(Объект[ХранениеФото]) Тогда
ТекФайл=Справочники.ФайлыКартинок.СоздатьЭлемент();
Иначе
ТекФайл=Объект[ХранениеФото].ПолучитьОбъект();
КонецЕсли;
ТекФайл.Наименование=ХранениеФото;
ТекФайл.ДатаСоздания=ТекущаяДата();
ТекФайл.ФайлХранилище=Новый ХранилищеЗначения(ДвоичныеДанные, Новый СжатиеДанных(9));
ТекФайл.Записать();
КонецПроцедуры
ПоказатьВсё работает нормально кроме одного. Фото всегда имеет одну и ту же ориентацию, как бы телефон не вертели. Всегда горизонтально и никак иначе. Кто сталкивался? В чем может быть проблема?
По теме из базы знаний
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
А зачем вы используете такой способ ??
Я когда смотрел новые возможности платформы (давно конечно это было) но метод таких проблем не вызывал.
НовВз = Новый ЗапускПриложенияМобильногоУстройства("android.media.action.IMAGE_CAPTURE");
Я когда смотрел новые возможности платформы (давно конечно это было) но метод
СредстваМультимедиа.СделатьФотоснимок()
(2) Дело в том, что стандартный метод платформы, который вы привели, срабатывает некорректно. Если камера с автофокусом, то, если фотографировать что-либо с большим количеством частиц (например землю с иголками от ёлок), то камера зависает и фото не делается. У нас на предприятии очень часто именно такие снимки и нужно делать. На фронталку без автофокуса норм фоткает, а за заднюю камеру частенько зависает, пришлось сделать через intent.
На данный момент нашел причину. Заключается в том, что приложение камеры Самсунг и еще некоторых производителей дописывает где-то не в том месте Exif файла, который отвечает за ориентацию фото. Интент не считывает эту инфу и ставит фото в положение по умолчанию.
Решилось пока костылем. Установили стороннюю камеру на мобилку, которая пишет фото так, как его понимает интент. Но, если научусь, то постараюсь сделать на внешней компоненте какое-то решение.
На данный момент нашел причину. Заключается в том, что приложение камеры Самсунг и еще некоторых производителей дописывает где-то не в том месте Exif файла, который отвечает за ориентацию фото. Интент не считывает эту инфу и ставит фото в положение по умолчанию.
Решилось пока костылем. Установили стороннюю камеру на мобилку, которая пишет фото так, как его понимает интент. Но, если научусь, то постараюсь сделать на внешней компоненте какое-то решение.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот