【发布时间】:2015-02-13 08:30:55
【问题描述】:
当我在我的 Android 手机上拍照时,我的 XE7 应用程序崩溃并显示位图尺寸过大。但我使用我以前使用过的代码,它工作得很好。取自embarcadero关于android/iOS拍照的例子。
我的代码如下:
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;
有人知道为什么它不起作用吗?
更新: 我确信代码是正确的。我已经在不同的应用程序中对其进行了测试。还尝试调试操作,并在调试期间不断重复 TTakePhotoFromCameraAction.CustomTextChanged。同样在调试期间它确实保存了图片,但由于某种原因它无法正确关闭操作。奇怪的是,该代码也适用于三星平板电脑,但不适用于索尼手机。
【问题讨论】:
-
哪个语句导致了崩溃?
image1.Bitmap.Assign(Image);?删除所有其他代码以找出答案。 -
无,它会在操作本身上崩溃。我尝试调试,但它在运行方法中的任何代码之前给出了消息。
-
也许应该在 saveparams 上运行一些初始化程序来初始化其他字段?
-
如果您的应用程序崩溃 -which?- 操作本身,那么您为什么要发布该代码?
-
@greenapps 因为该操作是 TActionList 的标准操作,无法显示任何代码。
标签: android image delphi bitmap delphi-xe7