Когда я делаю снимок на своем Android-телефоне, приложение XE7 падает, и он говорит, что размер растрового изображения большой. Но я использую код, который я использовал раньше, и он работал нормально. Это из примера embarcadero о съемке на android/iOS.Delphi XE7 Размер растрового изображения на большое сообщение на Android
Мой код ниже:
procedure TForm1.TakePhotoFromCameraAction1DidFinishTaking(
Image: TBitmap);
var
saveParams:TBitmapCodecSaveParams;
directory,name:String;
begin
image1.Bitmap.Assign(Image);
saveParams.Quality := 100;
{$IFDEF ANDROID}
directory := TPath.GetPicturesPath;
name := '/RoomId:'+ fRoomId.ToString()+' '+DateTimeToStr(Now)+'.png';
{$ENDIF}
{$IFDEF IOS}
directory := TPath.GetDocumentsPath;
name := '/RoomId:'+ fRoomId.ToString()+' '+DateTimeToStr(Now)+'.png';
{$ENDIF}
Image.SaveToFile(directory+name,@saveParams);
end;
Кто знает, почему он не работает?
UPDATE: Я знаю, что код правильный. Я тестировал его в другом приложении. Также пытался отладить действие и во время отладки. Он продолжал повторять TTakePhotoFromCameraAction.CustomTextChanged. Также во время отладки он сохранил изображение, но по какой-то причине он не смог закрыть действие правильно. Странно то, что код также работает на планшете samsung, но не на телефоне sony.
Какое утверждение вызывает крушение? 'image1.Bitmap.Assign (Изображение);'? Удалите все остальные коды, чтобы узнать. – greenapps
Нет, он падает на самом действии. Я попытался отлаживать, но он дал сообщение, прежде чем он запустил какой-либо код в методе. – Remi
Может быть, какой-то инициализатор должен запускаться на saveparams для инициализации других полей? –