DELPHI盒子
!实时搜索: 盒子论坛 | 注册用户 | 修改信息 | 退出
检举帖 | 全文检索 | 关闭广告 | 捐赠
技术论坛
 用户名
 密  码
自动登陆(30天有效)
忘了密码
≡技术区≡
DELPHI技术
lazarus/fpc/Free Pascal
移动应用开发
Web应用开发
数据库专区
报表专区
网络通讯
开源项目
论坛精华贴
≡发布区≡
发布代码
发布控件
文档资料
经典工具
≡事务区≡
网站意见
盒子之家
招聘应聘
信息交换
论坛信息
最新加入: teacherlau
今日帖子: 63
在线用户: 25
导航: 论坛 -> 移动应用开发 斑竹:flyers,iamdream  
作者:
男 sail2000 (小帆工作室) ★☆☆☆☆ -
盒子活跃会员
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;
----------
详细权限已经可以获取,详细代码见附件:
此帖子包含附件:sail2000_201982010658.zip 大小:14.1K
----------------------------------------------
delphi 是兴趣,和工作无关,即使它倒闭。又不靠它 delphi 吃饭,怕甚?
作者:
男 sail2000 (小帆工作室) ★☆☆☆☆ -
盒子活跃会员
2019/8/31 9:55:12
1楼: 用第三方库暂时解决这个困扰,见附件:
记得将附件扩展名 zip -> 7z
delphi 10.3.2
此帖子包含附件:sail2000_20198319553.zip 大小:744.4K
----------------------------------------------
delphi 是兴趣,和工作无关,即使它倒闭。又不靠它 delphi 吃饭,怕甚?
作者:
男 sail2000 (小帆工作室) ★☆☆☆☆ -
盒子活跃会员
2019/8/31 13:13:21
2楼: 这个是不用三方库处理的代码:
同样要将附件扩展名 zip -> 7z
delphi 10.3.2
此帖子包含附件:sail2000_2019831131321.zip 大小:32.5K
----------------------------------------------
delphi 是兴趣,和工作无关,即使它倒闭。又不靠它 delphi 吃饭,怕甚?
作者:
男 codecoolie (CodeCoolie) ★☆☆☆☆ -
普通会员
2019/8/31 17:03:44
3楼:
----------------------------------------------
FFmpeg for Delphi http://www.CCAVC.com http://www.DelphiFFmpeg.com
信息
登陆以后才能回复
Copyright © 2CCC.Com 盒子论坛 v3.0.1 版权所有 页面执行93.75毫秒 RSS