diff --git "a/\345\260\217\347\231\275\350\257\276\347\250\213/\344\273\245openKylin\347\234\213\345\233\276\350\275\257\344\273\266\344\270\272\344\276\213\357\274\214\346\265\205\350\260\210\345\233\276\347\211\207\347\274\226\350\247\243\347\240\201\345\272\223\342\200\224FreeImage.md" "b/\345\260\217\347\231\275\350\257\276\347\250\213/\344\273\245openKylin\347\234\213\345\233\276\350\275\257\344\273\266\344\270\272\344\276\213\357\274\214\346\265\205\350\260\210\345\233\276\347\211\207\347\274\226\350\247\243\347\240\201\345\272\223\342\200\224FreeImage.md" index 76afe7c1d0e63ea143d20916a35466f281b22e04..d8b391fda312f7d152b979881250084e4bb2b07c 100644 --- "a/\345\260\217\347\231\275\350\257\276\347\250\213/\344\273\245openKylin\347\234\213\345\233\276\350\275\257\344\273\266\344\270\272\344\276\213\357\274\214\346\265\205\350\260\210\345\233\276\347\211\207\347\274\226\350\247\243\347\240\201\345\272\223\342\200\224FreeImage.md" +++ "b/\345\260\217\347\231\275\350\257\276\347\250\213/\344\273\245openKylin\347\234\213\345\233\276\350\275\257\344\273\266\344\270\272\344\276\213\357\274\214\346\265\205\350\260\210\345\233\276\347\211\207\347\274\226\350\247\243\347\240\201\345\272\223\342\200\224FreeImage.md" @@ -1,4 +1,4 @@ -# 【小白课程】以openKylin看图软件为例,浅谈图片编解码库—FreeImage【小白课程】以openKylin看图软件为例,浅谈图片编解码库—FreeImage +# 【小白课程】以openKylin看图软件为例,浅谈图片编解码库—FreeImage 看图软件是openKylin操作系统上一款开源的图像查看软件,支持对图片进行基本操作,如:缩放、翻转、详情查看、复制、打印、重命名等,同时还可以对图片进行裁剪、存储、标注和ocr(文字识别)。 @@ -18,7 +18,7 @@ FreeImage库是一款开源的,免费的和跨平台的图片编解码库。 ## 3.使用FreeImage库加载图片 -看图软件在加载或操作一张图片的整个过程都是以cv::mat矩阵来存储图片的。打开一张图片时,看图软件使用FreeImage库加载图片的完整流程如下所示: +看图软件在加载或操作一张图片的整个过程中都是以cv::mat矩阵来存储图片的。打开一张图片时,看图软件使用FreeImage库加载图片的完整流程如下所示: 1. 获取图片真实格式; 2. 判断图片是否支持FreeImage读入; @@ -28,7 +28,7 @@ FreeImage库是一款开源的,免费的和跨平台的图片编解码库。 ### 3.1 获取图片真实格式 -在操作图片时,图片后缀可能是.xbm,.sr等,但这并不代表图片是xbm或sr格式,此时需要先通过库函数来获取图片的真实格式。// 用库获取文件格式,path是图片的路径。     QByteArray temp_path;     temp_path.append(path.toUtf8());     FREE_IMAGE_FORMAT format = FreeImage_GetFileType(temp_path.data());FreeImage_GetFileType:由文件头拿到文件类型。参数:图片路径。这个函数的返回值是FREE_IMAGE_FORMAT。可以从下图看到,返回值也可能是FIF_UNKNOWMN。 +在操作图片时,图片后缀可能是.xbm,.sr等,但这并不代表图片是xbm或sr格式,此时需要先通过库函数来获取图片的真实格式。 // 用库获取文件格式,path是图片的路径。QByteArray temp_path; temp_path.append(path.toUtf8()); FREE_IMAGE_FORMAT format = FreeImage_GetFileType(temp_path.data()); FreeImage_GetFileType:由文件头拿到文件类型。参数:图片路径。这个函数的返回值是FREE_IMAGE_FORMAT。可以从下图看到,返回值也可能是FIF_UNKNOWMN。 ![图片](https://www.openkylin.top/upload/202302/1675302047853305.png) @@ -78,7 +78,8 @@ int bpp = FreeImage_GetBPP(src);//图片的深度FREE_IMAGE_TYPE fit = Fre 库中同样有可以直接调用的函数。FreeImage_GetBits(FIBITMAP *dib):返回一个指向位图的数据位的指针 -4. size_t stepstep 每行占据的字节数FreeImage_GetPitch(FIBITMAP *dib):返回位深度或线宽度(又叫做扫描宽度)。是以字节为单位返回对齐到下一个32位字节边界的位图宽度。 +4. size_t stepstep 每行占据的字节数FreeImage_GetPitch(FIBITMAP *dib):返回位深度或线宽度(又叫做扫描宽度)。 +是以字节为单位返回对齐到下一个32位字节边界的位图宽度。 FIBITMAP *dib;int step = FreeImage_GetPitch(dib);