Не переворачивает фото в мобильном приложении

1. user602678_maxipunchik 98 29.06.20 13:22 Сейчас в теме
Есть такой код в мобильном приложении

&НаКлиенте
Процедура СделатьФото(ХранениеФото)
	
	#Если МобильноеПриложениеКлиент Тогда

		кат = КаталогДокументов();

		 ФайлКартинки = кат+"MobilePhoto_" + Строка(Новый УникальныйИдентификатор)+"jpg";

		ФайлКартинки = "file://" + ФайлКартинки;
		НовВз = Новый ЗапускПриложенияМобильногоУстройства("android.media.action.IMAGE_CAPTURE");
		НовВз.ДополнительныеДанные.Добавить("output",ФайлКартинки,"Uri");
		Рез = НовВз.Запустить(Истина);
		ФайлКартинки = СтрЗаменить(ФайлКартинки,"file://","");
		Файл = Новый Файл(ФайлКартинки);

		Если Файл.Существует() Тогда
		
			АдресФайлаВоВременномХранилище = ПоместитьВоВременноеХранилище(Новый ДвоичныеДанные(ФайлКартинки));
			ЗаполнитьФотоНаСервере_тчФайлы(АдресФайлаВоВременномХранилище, ХранениеФото);

		КонецЕсли;

	#КонецЕсли
		
КонецПроцедуры


&НаСервере
Процедура ЗаполнитьФотоНаСервере_тчФайлы(АдресФайлаВоВременномХранилище, ХранениеФото)
	
	ДвоичныеДанные = ПолучитьИзВременногоХранилища(АдресФайлаВоВременномХранилище);
	
	Если Не ЗначениеЗаполнено(Объект[ХранениеФото]) Тогда
		ТекФайл=Справочники.ФайлыКартинок.СоздатьЭлемент();
	Иначе
		ТекФайл=Объект[ХранениеФото].ПолучитьОбъект();
	КонецЕсли;
	
	ТекФайл.Наименование=ХранениеФото;
	ТекФайл.ДатаСоздания=ТекущаяДата();
	ТекФайл.ФайлХранилище=Новый ХранилищеЗначения(ДвоичныеДанные, Новый СжатиеДанных(9));	
	ТекФайл.Записать();

КонецПроцедуры


Показать


Всё работает нормально кроме одного. Фото всегда имеет одну и ту же ориентацию, как бы телефон не вертели. Всегда горизонтально и никак иначе. Кто сталкивался? В чем может быть проблема?
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Aleksnow 29.06.20 16:49 Сейчас в теме
А зачем вы используете такой способ
НовВз = Новый ЗапускПриложенияМобильногоУстройства("android.media.action.IMAGE_CAPTURE");
??
Я когда смотрел новые возможности платформы (давно конечно это было) но метод
СредстваМультимедиа.СделатьФотоснимок()
таких проблем не вызывал.
3. user602678_maxipunchik 98 03.07.20 13:51 Сейчас в теме
(2) Дело в том, что стандартный метод платформы, который вы привели, срабатывает некорректно. Если камера с автофокусом, то, если фотографировать что-либо с большим количеством частиц (например землю с иголками от ёлок), то камера зависает и фото не делается. У нас на предприятии очень часто именно такие снимки и нужно делать. На фронталку без автофокуса норм фоткает, а за заднюю камеру частенько зависает, пришлось сделать через intent.

На данный момент нашел причину. Заключается в том, что приложение камеры Самсунг и еще некоторых производителей дописывает где-то не в том месте Exif файла, который отвечает за ориентацию фото. Интент не считывает эту инфу и ставит фото в положение по умолчанию.

Решилось пока костылем. Установили стороннюю камеру на мобилку, которая пишет фото так, как его понимает интент. Но, если научусь, то постараюсь сделать на внешней компоненте какое-то решение.
4. Xershi 1555 03.07.20 21:35 Сейчас в теме
(3) пишите на джаве и потом статью.
Никто в этой области не хочет делиться инфой...
MonteCriZto; +1 Ответить
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот