回复
HarmonyOS应用开发实战-JS访问本地图片 原创
鸿蒙时代
发布于 2021-11-18 14:20
浏览
1收藏
选择鸿蒙api7 提供获取读取本地文件的api,但api7还未稳定,我们可以使用java api将想要的文件复制到js现在可以访问的internal://app/下,在使用js访问。
//存储照片到js可以访问的目录下
void setImaData(Uri uri,String name){
String imgName ="/"+name+".jpg";
requestPermissionsFromUser(new String[]{"ohos.permission.READ_USER_STORAGE"},1234);
HiLog.info(TAG,"私有目录:"+this.getFilesDir());
HiLog.info(TAG,"缓存目录:"+this.getCacheDir());
HiLog.info(TAG,"数据目录:"+this.getDataDir());
HiLog.info(TAG,"外部目录:"+this.getExternalCacheDir());
HiLog.info(TAG,"引用目录:"+this.getPreferencesDir());
HiLog.info(TAG,"同步目录:"+this.getDistributedDir());
HiLog.info(TAG,"应用目录:"+this.getDir("", Context.MODE_PRIVATE));
File[] dataChildFiles = this.getDataDir().listFiles();
for (File dataChildFile : dataChildFiles) {
HiLog.info(TAG,"数据子目录:"+dataChildFile);
}
File[] externalFiles=this.getExternalMediaDirs();
for (File externalFile : externalFiles) {
HiLog.info(TAG,"外部Media目录:"+externalFile);
}
try {
//该目录和JSUI中的internal://cache/目录是一个目录
// File file=new File(this.getCacheDir()+“/111.png”);
File file=new File(this.getFilesDir()+imgName);
HiLog.info(TAG,“文件路径:”+file);
if(file.exists())
{
HiLog.info(TAG,“文件已存在”);
setUriToService(imgName);
return;
}
HiLog.info(TAG,“文件不存在”);
//定义数据能力帮助对象
DataAbilityHelper helper=DataAbilityHelper.creator(getContext());
//读取图片
FileDescriptor fd = null;
try {
fd = helper.openFile(uri, "r");
} catch (DataAbilityRemoteException e) {
e.printStackTrace();
}
ImageSource imageSource;
imageSource = ImageSource.create(fd, null);
// 设置图片参数
ImageSource.DecodingOptions decodingOptions = new ImageSource.DecodingOptions();
decodingOptions.desiredSize=new Size(200,200);
imageSource.createPixelmap(decodingOptions);
//该种方式直接访问internal://app目录
// FileOutputStream fos=new FileOutputStream(“/data/user/0/com.example.abilitytransfertest/files//111.jpg”);
FileOutputStream fos=new FileOutputStream(this.getFilesDir()+imgName);
ImagePacker imagePacker = ImagePacker.create();
ImagePacker.PackingOptions packingOptions = new ImagePacker.PackingOptions();
packingOptions.format = "image/jpeg";
packingOptions.quality = 90;
boolean result = imagePacker.initializePacking(fos, packingOptions);
if(result)
{
result = imagePacker.addImage(imageSource.createPixelmap(decodingOptions));
if (result) {
long dataSize = imagePacker.finalizePacking();
HiLog.info(TAG,"文件大小:"+dataSize);
}
}
fos.flush();
fos.close();
if(file.exists())
{
HiLog.info(TAG,"文件已存在");
setUriToService(imgName);
return;
}
} catch (IOException e) {
HiLog.info(TAG,"文件保存出错:"+e.getMessage());
e.printStackTrace();
}
File file=this.getFilesDir();
File[] files = file.listFiles();
for (File file1 : files) {
HiLog.info(TAG,"File目录:"+file1);
}
}
©著作权归作者所有,如需转载,请注明出处,否则将追究法律责任
分类
标签
HarmonyOS应用开发实战-JS访问本地图片.docx 15.31K 49次下载
已于2021-11-18 14:47:09修改
赞
2
收藏 1
回复
相关推荐