Jump to content
Alex Shi

Проект CameraPhotoDemo повёрнутые фото

Recommended Posts

Добрый день. В проекте CameraPhotoDemo на Mi9 (Android 10) фото сделанные на основную камеру получаются повёрнутые на -90 градусов, а на фронтальную +90 градусов.

Make: Xiaomi
Model: MI 9
Resolution: 2009x1080
Density: 440dpi (unknown)
Release: 10
API: 29

Share this post


Link to post
Share on other sites

Проверил:

  1. Фотографии снятые на заднюю камеру поворачиваются корректно.
  2. Фотографии снятые на фронтальную камеру неправильно поворачиваются.

Исправлением займусь, когда буду доделывать сканер баркодов, заодно исправлю все текущие ошибки с камерой.

Share this post


Link to post
Share on other sites

В моем случает обе камеры не правильно поворачивают. Проверю еще раз после выхода исправления. Спасибо.

Share this post


Link to post
Share on other sites

Проверил на релизе 1.1.3.0, проблема не ушла. На обе камеры фото поворачиваются не корректно. 

Screenshot_2020-03-24-12-28-50-171_ru.fgx.cameraphotodemo.jpg

Screenshot_2020-03-24-12-29-26-195_ru.fgx.cameraphotodemo.jpg

Share this post


Link to post
Share on other sites

Данная проблема не была решена в релизе 1.1.3.0

Такое поведение характерно лишь для малой части аппаратов.

Вам, к сожалению, не повезло.

Мы работаем над этим. Ожидайте следующих релизов.

Share this post


Link to post
Share on other sites
Posted (edited)

Здравствуйте

Решается, в большинстве случаев следующим методом

uses AndroidApi.Jni,Java.Bridge,Java.Bridge.Helpers,FGX.Canvas.Android,Android.Api.Javatypes,Android.Api.ActivityAndView, Android.Api.Exif;
function RotateBitmap(B:TfgBitmap;Sz:Integer):TfgBitmap;
var M:TJMatrix;
    BA,BA1:TJBitmap;
begin
BA:=TfgAndroidBitmapHandle(B.Handle).NativeBitmap;
M:=TJMatrix.Create;
m.postRotate(Sz);
BA1:=TJBitmap.createBitmap(BA,0,0,BA.getWidth,BA.getHeight,m,true);
Result:=TfgBitmap.CreateFromNativeBitmap(BA1);
end;
function PrepareBitmapFromFile(FileName:String):TfgBitmap;
var E:TJExifInterface;
    Orientation:Integer;
begin
  E:=TJExifInterface.Create(FileName);
  Orientation:=E.getAttributeInt(TJExifInterface.TAG_ORIENTATION,TJExifInterface.ORIENTATION_UNDEFINED);
  Result:=TfgBitmap.CreateFromFile(FileName);
  if Orientation=TJExifInterface.ORIENTATION_ROTATE_180
  then
   Result:=RotateBitmap(Result,180)
  else
  if Orientation=TJExifInterface.ORIENTATION_ROTATE_90
  then
   Result:=RotateBitmap(Result,90)
  else
  if Orientation=TJExifInterface.ORIENTATION_ROTATE_270
  then
   Result:=RotateBitmap(Result,270);


end;

Извините за небрежность кода

Android.Api.Exif.pas

Edited by Stas

Share this post


Link to post
Share on other sites

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...