HarmonyOS 鸿蒙Next怎样获取沙箱中图片的长和宽?需要代码
HarmonyOS 鸿蒙Next怎样获取沙箱中图片的长和宽?需要代码 怎样获取沙箱中图片的长和宽?需要代码
2 回复
可以使用以下方法获取沙箱中图片的长和宽,可以参考文档:
demo如下:
import { dataSharePredicates } from '@kit.ArkData';
import { photoAccessHelper } from '@kit.MediaLibraryKit';
const context = this.getContext();
let phAccessHelper = photoAccessHelper.getPhotoAccessHelper(context);
class MediaDataHandler implements photoAccessHelper.MediaAssetDataHandler<ArrayBuffer> {
onDataPrepared(data: ArrayBuffer) {
if (data === undefined) {
console.error('Error occurred when preparing data');
return;
}
console.info('on image data prepared');
// 应用自定义对资源数据的处理逻辑
}
}
async function example() {
let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
let uri = 'file://media/Photo/1/IMG_datetime_0001/displayName.jpg' // 需保证此uri已存在。
predicates.equalTo(photoAccessHelper.PhotoKeys.URI, uri.toString());
let fetchOptions: photoAccessHelper.FetchOptions = {
fetchColumns: [photoAccessHelper.PhotoKeys.WIDTH, photoAccessHelper.PhotoKeys.HEIGHT],
predicates: predicates
};
try {
let fetchResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> =
await phAccessHelper.getAssets(fetchOptions);
let photoAsset: photoAccessHelper.PhotoAsset = await fetchResult.getFirstObject();
let requestOptions: photoAccessHelper.RequestOptions = {
deliveryMode: photoAccessHelper.DeliveryMode.HIGH_QUALITY_MODE,
}
await photoAccessHelper.MediaAssetManager.requestImageData(context, photoAsset, requestOptions,
new MediaDataHandler());
console.info('requestImageData successfully');
console.info('WIDTH : ' + photoAsset.get(photoAccessHelper.PhotoKeys.WIDTH));
console.info('HEIGHT : ' + photoAsset.get(photoAccessHelper.PhotoKeys.HEIGHT));
fetchResult.close();
} catch (err) {
console.error('getAssets failed with err: ' + err);
}
}
输出结果为图片的宽和高
您这边如果是这种路径的话,可以使用沙箱路径,先通过createImageSource构建一个ImageSource实例,再使用createPixelMap创建一个PixelMap对象来获取图片的宽高
let uri: sendableImage.ImageSource = sendableImage.createImageSource(图片沙箱路径);
uri.createPixelMap().then((pixelMap) => {
pixelMap.getImageInfo().then((res) => {
console.log("awdawdaeq2e12312", JSON.stringify(res.size.width))
console.log("awdawdaeq2e12312", JSON.stringify(res.size.height))
})
})
更多关于HarmonyOS 鸿蒙Next怎样获取沙箱中图片的长和宽?需要代码的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在HarmonyOS(鸿蒙)系统中,获取沙箱中图片的长和宽,可以通过使用鸿蒙提供的媒体库API来实现。以下是一个简短的代码示例,展示了如何获取图片的尺寸:
#include <media/Image.h>
#include <utils/Size.h>
using namespace OHOS::Media;
using namespace OHOS::Utils;
void GetImageDimensions(const std::string& imagePath) {
Image image;
if (image.LoadFromFile(imagePath, Image::PixelFormat::PIXEL_FMT_RGBA_8888) != Image::SUCCESS) {
// Handle error: failed to load image
return;
}
Size size = image.GetSize();
int width = size.GetWidth();
int height = size.GetHeight();
// Now you have the width and height of the image
// Use them as needed
}
在这个示例中,Image
类用于加载图片,并通过 GetSize
方法获取图片的宽度和高度。注意,这里假设图片路径是有效的,并且图片存在于应用的沙箱目录中。
如果图片格式不是RGBA_8888,你可能需要调整 PixelFormat
参数以匹配你的图片格式。
如果问题依旧没法解决请联系官网客服,官网地址是 https://www.itying.com/category-93-b0.html