获取图片大小 - GetImageSize
函数简介
获取指定图片的宽度和高度。此函数可用于获取已加载到内存中的图片尺寸信息,返回的尺寸单位为像素。这对于图像处理、界面布局、图像匹配等操作非常有用。
接口名称
GetImageSize
DLL调用
int GetImageSize(long ola, long image_ptr, int* width, int* height)
参数定义:
ola
(长整型数): OLAPlug对象的指针,由 CreateCOLAPlugInterFace 接口生成。image_ptr
(长整型数): 图片句柄,由图片加载函数返回。width
(整型数指针): 返回图片的宽度(像素)。height
(整型数指针): 返回图片的高度(像素)。
示例:
// 获取单个图片的大小
long image = LoadImage(ola, "D:\\test\\sample.png");
if (image != 0) {
int width, height;
int ret = GetImageSize(ola, image, &width, &height);
if (ret == 1) {
printf("图片大小:%d x %d 像素\n", width, height);
// 计算图片的宽高比
float aspect_ratio = (float)width / height;
printf("宽高比:%.2f\n", aspect_ratio);
// 计算图片的总像素数
int total_pixels = width * height;
printf("总像素数:%d\n", total_pixels);
} else {
printf("获取图片大小失败\n");
}
FreeImagePtr(ola, image);
}
// 比较两张图片的大小
long image1 = LoadImage(ola, "D:\\test\\pic1.jpg");
long image2 = LoadImage(ola, "D:\\test\\pic2.jpg");
if (image1 != 0 && image2 != 0) {
int width1, height1, width2, height2;
GetImageSize(ola, image1, &width1, &height1);
GetImageSize(ola, image2, &width2, &height2);
printf("图片1大小:%d x %d\n", width1, height1);
printf("图片2大小:%d x %d\n", width2, height2);
if (width1 * height1 > width2 * height2) {
printf("图片1的尺寸更大\n");
} else if (width1 * height1 < width2 * height2) {
printf("图片2的尺寸更大\n");
} else {
printf("两张图片尺寸相同\n");
}
FreeImagePtr(ola, image1);
FreeImagePtr(ola, image2);
}
COM调用
int GetImageSize(long image_ptr, int* width, int* height)
参数定义:
image_ptr
(长整型数): 图片句柄,由图片加载函数返回。width
(整型数指针): 返回图片的宽度(像素)。height
(整型数指针): 返回图片的高度(像素)。
示例:
# 获取单个图片的大小
image = ola.LoadImage("D:\\test\\sample.png")
if image != 0:
width = height = 0
ret = ola.GetImageSize(image, width, height)
if ret == 1:
messagebox(f"图片大小:{width} x {height} 像素")
# 计算图片的宽高比
aspect_ratio = width / height
messagebox(f"宽高比:{aspect_ratio:.2f}")
# 计算图片的总像素数
total_pixels = width * height
messagebox(f"总像素数:{total_pixels}")
else:
messagebox("获取图片大小失败")
ola.FreeImagePtr(image)
# 比较两张图片的大小
image1 = ola.LoadImage("D:\\test\\pic1.jpg")
image2 = ola.LoadImage("D:\\test\\pic2.jpg")
if image1 != 0 and image2 != 0:
width1 = height1 = width2 = height2 = 0
ola.GetImageSize(image1, width1, height1)
ola.GetImageSize(image2, width2, height2)
messagebox(f"图片1大小:{width1} x {height1}")
messagebox(f"图片2大小:{width2} x {height2}")
size1 = width1 * height1
size2 = width2 * height2
if size1 > size2:
messagebox("图片1的尺寸更大")
elif size1 < size2:
messagebox("图片2的尺寸更大")
else:
messagebox("两张图片尺寸相同")
ola.FreeImagePtr(image1)
ola.FreeImagePtr(image2)
返回值
整型数:
- 0: 获取失败
- 1: 获取成功
注意事项
- 使用此函数前,确保图片已经成功加载到内存中
- 返回的尺寸单位为像素,与图片的实际物理尺寸(如打印尺寸)可能不同
- 对于动态图(如GIF),返回的是第一帧的尺寸
- 如果需要调整图片大小,可以使用 ReSize 或 ScalePixels 函数
- 在进行图像匹配操作前,建议先检查目标图片和模板图片的尺寸是否合适