HarmonyOS鸿蒙Next中OH_ImageSourceNative_CreateFromFd和OH_ImageSourceNative_CreateFromData表现不同问题
HarmonyOS鸿蒙Next中OH_ImageSourceNative_CreateFromFd和OH_ImageSourceNative_CreateFromData表现不同问题 如题,OH_ImageSourceNative_CreateFromFd:从文件Fd创建ImageSource和从文件的Data创建ImageSource,两个接口读取的图片文件是同一份,但是FromFd创建的ImageSource有问题,导致最终打包的图片异常,无法显示,并且在过程中报错:401参数问题;而FromData正常。
char buffer1[100];
// 缓冲区
size_t t1 = read(fd, buffer2, sizeof(buffer1));
char buffer2[100];
// 缓冲区
size_t t2 = read(rawFileDescriptor.fd, buffer2, sizeof(buffer3));
这里的t1=0;t2=100 问题就是这样,读取的同一个文件,却是两种不同的结果,另外这里两个Fd也不一样。
更多关于HarmonyOS鸿蒙Next中OH_ImageSourceNative_CreateFromFd和OH_ImageSourceNative_CreateFromData表现不同问题的实战教程也可以访问 https://www.itying.com/category-93-b0.html
属于代码问题,一开始的时候,piexl_save.jepg
是不存在的,手动创建了,这个时候,文件是空的,fd为0,代码往后运行后,文件填充了pixel,且保存,这个时候完整的文件已经存在且有具体的文件内容,再读取的时候,fd就存在了,同时buffer长度也是有的
更多关于HarmonyOS鸿蒙Next中OH_ImageSourceNative_CreateFromFd和OH_ImageSourceNative_CreateFromData表现不同问题的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在HarmonyOS鸿蒙Next中,OH_ImageSourceNative_CreateFromFd
和OH_ImageSourceNative_CreateFromData
是两个用于创建图像源的接口,但它们在处理数据时表现出不同的行为。
OH_ImageSourceNative_CreateFromFd
通过文件描述符(File Descriptor)来创建图像源。该接口适用于从文件系统中读取图像数据,并且可以处理较大的图像文件。由于它直接操作文件描述符,因此在处理大文件时效率较高,且内存占用相对较低。
OH_ImageSourceNative_CreateFromData
则是通过内存中的二进制数据来创建图像源。该接口适用于直接从内存中加载图像数据,通常用于处理较小的图像或已经加载到内存中的图像数据。由于它直接操作内存数据,因此在小图像处理时速度较快,但内存占用相对较高。
两者的主要区别在于数据来源和处理方式。OH_ImageSourceNative_CreateFromFd
更适合处理大文件,而OH_ImageSourceNative_CreateFromData
则更适合处理小图像或内存中的图像数据。这种差异可能导致在不同场景下性能表现不同,开发者需要根据具体需求选择合适的接口。
在HarmonyOS鸿蒙Next中,OH_ImageSourceNative_CreateFromFd
和OH_ImageSourceNative_CreateFromData
表现不同,主要是因为它们处理图像数据的方式不同。OH_ImageSourceNative_CreateFromFd
通过文件描述符(fd)读取图像数据,适合处理大文件或流式数据,效率较高;而OH_ImageSourceNative_CreateFromData
直接处理内存中的图像数据,适合小数据量或需要频繁修改的场景。根据具体需求选择合适的方法,避免性能问题。