导航:
论坛 -> 移动应用开发
斑竹:flyers,iamdream
作者:
2019/8/20 10:06:58
标题:
[delphi Rio][Android]调用摄像头拍摄后进行裁切,不能加载裁切后的图片
浏览:2651
加入我的收藏
楼主:
可以确定的是,官方的10.3所有的调用摄像头例子,如果设置 TakePhotoFromCameraAction 的 Editable := True 来进行相片裁切,结果都是“不能加载图片”(coudn't load image),已经有人在QC中提交了这个。 https://quality.embarcadero.com/browse/RSP-23206 ---------- 下面是想知道如何跳过这个坑? 我现在已经可以调用摄像头拍照并可以进行裁切,就是不知道怎么获取裁切后的图片。 代码片段: ---------- var Intent: JIntent; FileName, DestFileName: string; Data: Jnet_Uri; lFile: JFile; Result_Code: Integer; Extras: JBundle; JBmp: JBitmap; begin FileName := System.IOUtils.TPath.GetPublicPath + PathDelim + IMAGE_FILENAME; DestFileName := TPath.GetDownloadsPath + PathDelim + IMAGE_FILENAME; TFile.Copy(FileName, DestFileName, True); // 复制图片到指定目录 // lFile := TJFile.JavaClass.init(StringToJString(FileName)); Intent := TJIntent.Create; if TJBuild_VERSION.JavaClass.SDK_INT >= TJBuild_VERSION_CODES.JavaClass.N then begin lFile := TJFile.JavaClass.init(StringToJString(FileName)); Intent.setFlags(TJIntent.JavaClass.FLAG_GRANT_READ_URI_PERMISSION or TJIntent.JavaClass.FLAG_GRANT_WRITE_URI_PERMISSION); Data := TJFileProvider.JavaClass.getUriForFile(TAndroidHelper.Context, StringToJString('com.embarcadero.camera_crop.fileprovider'), lFile); end else Data := TJnet_Uri.JavaClass.parse (StringToJString('file://' + DestFileName)); Intent.setAction(StringToJString('com.android.camera.action.CROP')); Intent.setDataAndType(Data, StringToJString('image/*')); // 设置裁剪 Intent.putExtra(StringToJString('crop'), True); // aspectX aspectY 是宽高的比例 Intent.putExtra(StringToJString('aspectX'), 1); Intent.putExtra(StringToJString('aspectY'), 1); // outputX outputY 是裁剪图片宽高 Intent.putExtra(StringToJString('outputX'), 150); Intent.putExtra(StringToJString('outputY'), 150); // Intent.putExtra(StringToJString('scale'), True); Intent.putExtra(StringToJString('return-data'), True); // Intent.putExtra(StringToJString('outputFormat'), StringToJString('PNG'));// 返回格式 try // TAndroidHelper.Activity.startActivity(Intent); TAndroidHelper.Activity.StartActivityForResult(Intent, Result_Code); 这里怎么获取裁切后的图片?? except on E: Exception do begin ShowMessage(E.Message); end; end; end; ---------- 详细权限已经可以获取,详细代码见附件:
----------------------------------------------
delphi 是兴趣,和工作无关,即使它倒闭。又不靠它 delphi 吃饭,怕甚?
作者:
2019/8/31 9:55:12
1楼:
用第三方库暂时解决这个困扰,见附件: 记得将附件扩展名 zip -> 7z delphi 10.3.2
----------------------------------------------
delphi 是兴趣,和工作无关,即使它倒闭。又不靠它 delphi 吃饭,怕甚?
作者:
2019/8/31 13:13:21
2楼:
这个是不用三方库处理的代码: 同样要将附件扩展名 zip -> 7z delphi 10.3.2
----------------------------------------------
delphi 是兴趣,和工作无关,即使它倒闭。又不靠它 delphi 吃饭,怕甚?