tromani
-
Постов
31 -
Зарегистрирован
-
Посещение
Сообщения, опубликованные tromani
-
-
хм... ну очевидно что медленность работы вызвана
ABitmapSurfaceResize.StretchFrom(ABitmapSurface,mxW,mxH);
в любом случае, поменяй код так чтоб эта часть вызывалась только тогда когда надо, в ином случае делай .Assign это решит проблему.
Я конечно не знаю как у вас происходит но меня очень напрягает когда 2-3% скачавших приложение ставят оценку 1 потому что что-то не заработало или они не разобрались как работает
-
в общем итоговая процедура получилась у меня вот так, при этом заработало там где до этого не работало
procedure CheckAndLoadFromStream(FileName:string; const ABitmap : TBitmap); var MaxImageSize : Integer; ABitmapSurface,ABitmapSurfaceResize : TBitmapSurface; mxH,mxW:integer; begin ABitmapSurface:=TBitmapSurface.Create; ABitmapSurfaceResize:=TBitmapSurface.Create; TBitmapCodecManager.LoadFromFile(FileName,ABitmapSurface); MaxImageSize:=TCanvasManager.DefaultCanvas.GetAttribute(TCanvasAttribute.MaxBitmapSize); if (ABitmapSurface.Height>MaxImageSize) or (ABitmapSurface.Width>MaxImageSize) then begin if ABitmapSurface.Height>ABitmapSurface.Width then begin mxH:=MaxImageSize; mxW:=Round(mxH/ABitmapSurface.Height*ABitmapSurface.Height); end else begin mxW:=MaxImageSize; mxH:=Round(mxW/ABitmapSurface.Width*ABitmapSurface.Height); end; end else begin mxW:=ABitmapSurface.Width; mxH:=ABitmapSurface.Height; end; ABitmapSurfaceResize.SetSize(mxW,mxH); ABitmapSurfaceResize.StretchFrom(ABitmapSurface,mxW,mxH); FreeAndNil(ABitmapSurface); ABitmap.SetSize(mxW,mxH); ABitmap.Assign(ABitmapSurfaceResize); FreeAndNil(ABitmapSurfaceResize); end;
-
В 19.05.2016 в 22:57, Евгений Корепов сказал:
Я смирился. У меня в приложении с ~20000 пользователями ошибка вылезает у 290 :-( Т.е. это примерно 1.5%.
попробуй переставь
ABitmapSurfaceResize:=TBitmapSurface.Create;
после
ABitmapSurface:=TBitmapSurface.Create;
и
после определения максимальных длины и ширины - сделай ABitmapSurfaceResize.SetSize
у меня по крайней мере заработало.
-
понял... ну тут единственный тогда выход что мне видится переписывать с ХЕ6 TImage и TBitmap, там оно работало, у меня глюк появился с переходом на ХЕ8-ХЕ10
-
скажите, кто-нибудь разобрался с проблемой?
у меня все тоже -
ABitmap.Assign(ABitmapSurfaceResize);
даже ПОСЛЕ преобразования размеров выдает ошибку Bitmap size too big
в FMX ужасно раздражает что на корректную работу строчки TBitmap().LoadFromFile(filename) можно потратить больше суток, причем не факт что в новой версии все будет работать стабильно
Ошибка "Bitmap size too big"
в TImage
Опубликовано
попробуем продолжить, на стареньком но не очень уж мертвом устройстве загрузка файла происходит катострофически невероятно долго. нашел более менее нормальный по скорости способ. но и тут не так все хорошо может ктото поймет в чем дело:
таким образом все просто шикарно, загрузка мгновенно все норм кроме одного, вместо синего - красный, не знаю как решить