2015-02-13 4 views
0

Когда я делаю снимок на своем 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.

+0

Какое утверждение вызывает крушение? 'image1.Bitmap.Assign (Изображение);'? Удалите все остальные коды, чтобы узнать. – greenapps

+0

Нет, он падает на самом действии. Я попытался отлаживать, но он дал сообщение, прежде чем он запустил какой-либо код в методе. – Remi

+0

Может быть, какой-то инициализатор должен запускаться на saveparams для инициализации других полей? –

ответ

0

У меня было свойство ScaleBy для формы, и в этом была проблема. После переименования собственности у меня больше не было проблемы.

Смежные вопросы