DtkGui
DTK Gui module
载入中...
搜索中...
未找到
Dtk::Gui::DImageHandler类 参考

DImageHandler 提供图像处理,读取、保存、旋转、滤镜等。 更多...

类 Dtk::Gui::DImageHandler 继承关系图:
Dtk::Gui::DImageHandler 的协作图:

Public 成员函数

 DImageHandler (QObject *parent=nullptr)
 构造 DImageHandler 实例,并指定父控件
 
 ~DImageHandler ()
 销毁 DImageHandler 实例
 
void setFileName (const QString &fileName)
 设置当前处理的图片文件路径
 
QString fileName () const
 返回当前处理的图片文件路径
 
QImage readImage ()
 从设置的图片文件路径中读取图片
 
QImage thumbnail (const QSize &size, Qt::AspectRatioMode mode)
 获取当前处理图片指定大小的缩略图,可调整宽高比适配模式
 
QString imageFormat () const
 返回当前设置图片文件的格式,若未设置文件路径,返回空字符串
 
QSize imageSize ()
 返回当前处理的图片尺寸,若未设置图片文件或加载失败,返回空图片尺寸 (-1, -1)
 
QHash< QString, QString > findAllMetaData ()
 查询图片包含的所有元数据,在动态加载 FreeImage 库后有效
 
void clearCache ()
 清空缓存数据,释放缓存的图片和错误信息
 
bool saveImage (const QString &fileName, const QString &format=QString())
 保存当前处理的图片至文件,可指定保存的图片格式, 若存在错误,将返回 false ,错误信息通过 lastError() 获取
 
bool saveImage (const QImage &image, const QString &fileName, const QString &format=QString())
 保存图片至文件,可指定保存的图片格式, 若存在错误,将返回 false ,错误信息通过 lastError() 获取
 
bool rotateImage (QImage &image, int angle)
 顺时针旋转图片,若存在错误,将返回 false ,错误信息通过 lastError() 获取
 
bool rotateImageFile (const QString &fileName, int angle)
 顺时针旋转图片文件中的图片
 
bool isReadable () const
 返回当前设置的图片文件是否可读取,判断基于图片格式,fileName() 为空时返回 false
 
bool isWriteable () const
 返回当前设置的图片文件是否可写入,判断基于图片格式,fileName() 为空时返回 false
 
bool isRotatable () const
 返回当前设置的图片文件是否可旋转,判断基于图片格式,fileName() 为空时返回 false
 
QString lastError () const
 返回最近一次错误的详细信息
 

静态 Public 成员函数

static QStringList supportFormats ()
 返回当前环境下 DImageHandler 可支持的图片格式,可动态加载 FreeImage 库以支持更多图片格式
 
static QString detectImageFormat (const QString &fileName)
 根据文件名称及文件内容检测图片格式
 
static QImage oldColorFilter (const QImage &img)
 为图片设置老照片滤镜并返回处理图片实例
 
static QImage warmColorFilter (const QImage &img, int intensity=30)
 为图片设置暖色滤镜并返回处理图片实例
 
static QImage coolColorFilter (const QImage &img, int intensity=30)
 为图片设置冷色滤镜并返回处理图片实例
 
static QImage grayScaleColorFilter (const QImage &img)
 为图片设置灰色滤镜并返回处理图片实例
 
static QImage antiColorFilter (const QImage &img)
 为图片设置反色滤镜并返回处理图片实例
 
static QImage metalColorFilter (const QImage &img)
 为图片设置金属风格滤镜并返回处理图片实例
 
static QImage bilateralFilter (const QImage &img, double spatialDecay=0.02, double photometricStandardDeviation=10)
 对图片进行双边滤波处理,可保持边界并去除噪点,可用于磨皮等处理
 
static QImage contourExtraction (const QImage &img)
 提取图片轮廓
 
static QImage binaryzation (const QImage &img)
 对图片进行二值化处理
 
static QImage grayScale (const QImage &img)
 取得灰阶图片
 
static QImage laplaceSharpen (const QImage &img)
 拉普拉斯锐化处理
 
static QImage sobelEdgeDetector (const QImage &img)
 sobel边缘检测处理,用于图片锐化
 
static QImage changeLightAndContrast (const QImage &img, int light=100, int contrast=150)
 变更图片的亮度和对比度并返回处理图片实例
 
static QImage changeBrightness (const QImage &img, int brightness)
 调整图片亮度并返回处理图片实例,取值范围 -255 ~ 255
 
static QImage changeTransparency (const QImage &img, int transparency)
 调整图片透明度并返回处理图片实例,取值范围 0 ~ 255
 
static QImage changeStauration (const QImage &img, int saturation)
 调整图片饱和度并返回处理图片实例,取值范围 -100 ~ 100
 
static QImage replacePointColor (const QImage &img, QColor oldColor, QColor newColor)
 遍历图片所有像素点,替换图片像素点颜色
 
static QImage flipHorizontal (const QImage &img)
 水平翻转图片
 
static QImage flipVertical (const QImage &img)
 垂直翻转图片
 

详细描述

DImageHandler 提供图像处理,读取、保存、旋转、滤镜等。

概述

提供多种格式图片的读取、保存,允许对部分格式进行旋转。提供多种滤镜、锐化、二值化等图像处理算法。 通过 DImageHandler::setFileName 设置当前处理的图片文件路径,通过 DImageHandler::readImage 取得图片数据,通过 DImageHandler::thumbnail 取得图片缩略图。设置文件路径将不会立即加载图片, 将在需要图片数据时读取,当不需要缓存数据时,可通过 DImageHandler::clearCache 清除缓存数据。

注解
拓展的图片格式依赖 FreeImage 和 LibRaw 公共库,DImageHandler 通过动态加载的方式解析公共库接口。 可通过 DImageHandler::supportFormats() 获取当前支持的图片格式类型。

编译

支持拓展的图片格式,编译时会判断环境是否存在依赖包,安装 libfreeimage-dev 及 libraw-dev , 设置编译选项 DTK_DISABLE_EX_IMAGE_FORMAT=OFF 后将开启拓展图片格式支持。

不同包构建环境默认策略不同,在 debianlinglong 构建环境默认依赖 libfreeimage-dev 及 libraw-dev , 支持拓展图片格式,其它环境需手动安装。

image-handler 工具示例

可在程序根目录 ./tools/image-handler 中查看 image-handler 工具项目。 image-handler 工具可用于提取图像信息、旋转图像、设置图像滤镜等。

image-handler [options] [file...]

image-handler 选项

选项 描述
-h, –help 显示工具帮助信息
-r, –rotate <degresses> 根据设置角度旋转图片,旋转角度需为 90度 的倍数
-o, –output <file> 保存处理后的文件到指定路径
-f <filter> 为图片设置滤镜,可选图片滤镜包括 old, warm, cool, gray, anticolor, metal
-l, –list 列出所有图片的格式
-e 列出所有图片的详细信息,结合 -l 使用

构造及析构函数说明

◆ DImageHandler()

Dtk::Gui::DImageHandler::DImageHandler ( QObject *  parent = nullptr)
explicit

构造 DImageHandler 实例,并指定父控件

参数
[in]parent作为实例的父控件

成员函数说明

◆ antiColorFilter()

static QImage Dtk::Gui::DImageHandler::antiColorFilter ( const QImage &  img)
static

为图片设置反色滤镜并返回处理图片实例

参数
[in]img待处理的图片实例
返回
处理完成的图片实例

◆ bilateralFilter()

static QImage Dtk::Gui::DImageHandler::bilateralFilter ( const QImage &  img,
double  spatialDecay = 0.02,
double  photometricStandardDeviation = 10 
)
static

对图片进行双边滤波处理,可保持边界并去除噪点,可用于磨皮等处理

参数
[in]img待处理的图片实例
[in]spatialDecay空间衰减值,用于双边滤波的空域信息,默认 0.02
[in]photometricStandardDeviation光度标准差值,用于双边滤波的值域信息, 默认 10
返回
处理完成的图片实例

◆ binaryzation()

static QImage Dtk::Gui::DImageHandler::binaryzation ( const QImage &  img)
static

对图片进行二值化处理

参数
[in]img待处理的图片实例
返回
处理完成的图片实例

◆ changeBrightness()

static QImage Dtk::Gui::DImageHandler::changeBrightness ( const QImage &  img,
int  brightness 
)
static

调整图片亮度并返回处理图片实例,取值范围 -255 ~ 255

参数
[in]img待处理的图片实例
[in]brightness图片亮度
返回
处理完成的图片实例

◆ changeLightAndContrast()

static QImage Dtk::Gui::DImageHandler::changeLightAndContrast ( const QImage &  img,
int  light = 100,
int  contrast = 150 
)
static

变更图片的亮度和对比度并返回处理图片实例

参数
[in]img待处理的图片实例
[in]light调整图片亮度,取值范围 0 ~ 300
[in]constrase调整图片对比度,取值范围 0 ~ 300
返回
处理完成的图片实例

◆ changeStauration()

static QImage Dtk::Gui::DImageHandler::changeStauration ( const QImage &  img,
int  saturation 
)
static

调整图片饱和度并返回处理图片实例,取值范围 -100 ~ 100

参数
[in]img待处理的图片实例
[in]saturation图片饱和度
返回
处理完成的图片实例

◆ changeTransparency()

static QImage Dtk::Gui::DImageHandler::changeTransparency ( const QImage &  img,
int  transparency 
)
static

调整图片透明度并返回处理图片实例,取值范围 0 ~ 255

参数
[in]img待处理的图片实例
[in]transparency图片透明度
返回
处理完成的图片实例

◆ contourExtraction()

static QImage Dtk::Gui::DImageHandler::contourExtraction ( const QImage &  img)
static

提取图片轮廓

参数
[in]img待处理的图片实例
返回
处理完成的图片实例

◆ coolColorFilter()

static QImage Dtk::Gui::DImageHandler::coolColorFilter ( const QImage &  img,
int  intensity = 30 
)
static

为图片设置冷色滤镜并返回处理图片实例

参数
[in]img待处理的图片实例
[in]intensity滤镜处理强度,取值范围 -255 ~ 255 ,默认30
返回
处理完成的图片实例

◆ detectImageFormat()

static QString Dtk::Gui::DImageHandler::detectImageFormat ( const QString &  fileName)
static

根据文件名称及文件内容检测图片格式

参数
[in]fileName图片文件路径
返回
图片格式

◆ fileName()

QString Dtk::Gui::DImageHandler::fileName ( ) const

返回当前处理的图片文件路径

返回
图片文件路径

◆ findAllMetaData()

QHash< QString, QString > Dtk::Gui::DImageHandler::findAllMetaData ( )

查询图片包含的所有元数据,在动态加载 FreeImage 库后有效

返回
图片信息表

◆ flipHorizontal()

static QImage Dtk::Gui::DImageHandler::flipHorizontal ( const QImage &  img)
static

水平翻转图片

参数
[in]img待处理的图片实例
返回
处理完成的图片实例

◆ flipVertical()

static QImage Dtk::Gui::DImageHandler::flipVertical ( const QImage &  img)
static

垂直翻转图片

参数
[in]img待处理的图片
返回
处理完成的图片实例

◆ grayScale()

static QImage Dtk::Gui::DImageHandler::grayScale ( const QImage &  img)
static

取得灰阶图片

参数
[in]img待处理的图片实例
返回
处理完成的图片实例

◆ grayScaleColorFilter()

static QImage Dtk::Gui::DImageHandler::grayScaleColorFilter ( const QImage &  img)
static

为图片设置灰色滤镜并返回处理图片实例

参数
[in]img待处理的图片实例
返回
处理完成的图片实例

◆ imageFormat()

QString Dtk::Gui::DImageHandler::imageFormat ( ) const

返回当前设置图片文件的格式,若未设置文件路径,返回空字符串

返回
图片格式

◆ imageSize()

QSize Dtk::Gui::DImageHandler::imageSize ( )

返回当前处理的图片尺寸,若未设置图片文件或加载失败,返回空图片尺寸 (-1, -1)

返回
图片大小

◆ isReadable()

bool Dtk::Gui::DImageHandler::isReadable ( ) const

返回当前设置的图片文件是否可读取,判断基于图片格式,fileName() 为空时返回 false

返回
是否可读取

◆ isRotatable()

bool Dtk::Gui::DImageHandler::isRotatable ( ) const

返回当前设置的图片文件是否可旋转,判断基于图片格式,fileName() 为空时返回 false

返回
是否可旋转

◆ isWriteable()

bool Dtk::Gui::DImageHandler::isWriteable ( ) const

返回当前设置的图片文件是否可写入,判断基于图片格式,fileName() 为空时返回 false

返回
是否可写入

◆ laplaceSharpen()

static QImage Dtk::Gui::DImageHandler::laplaceSharpen ( const QImage &  img)
static

拉普拉斯锐化处理

参数
[in]img待处理的图片实例
返回
处理完成的图片实例

◆ lastError()

QString Dtk::Gui::DImageHandler::lastError ( ) const

返回最近一次错误的详细信息

返回
错误信息

◆ metalColorFilter()

static QImage Dtk::Gui::DImageHandler::metalColorFilter ( const QImage &  img)
static

为图片设置金属风格滤镜并返回处理图片实例

参数
[in]img待处理的图片实例
返回
处理完成的图片实例

◆ oldColorFilter()

static QImage Dtk::Gui::DImageHandler::oldColorFilter ( const QImage &  img)
static

为图片设置老照片滤镜并返回处理图片实例

参数
[in]img待处理的图片实例
返回
处理完成的图片实例

◆ readImage()

QImage Dtk::Gui::DImageHandler::readImage ( )

从设置的图片文件路径中读取图片

fileName() 设置的图片文件中读取图片,若读取失败,将返回空图片实例, 错误信息通过 lastError() 获取

返回
图片实例

◆ replacePointColor()

static QImage Dtk::Gui::DImageHandler::replacePointColor ( const QImage &  img,
QColor  oldColor,
QColor  newColor 
)
static

遍历图片所有像素点,替换图片像素点颜色

参数
[in]img待处理的图片实例
[in]oldColor旧像素颜色
[in]newColor新像素颜色
返回
处理完成的图片实例

◆ rotateImage()

bool Dtk::Gui::DImageHandler::rotateImage ( QImage &  image,
int  angle 
)

顺时针旋转图片,若存在错误,将返回 false ,错误信息通过 lastError() 获取

参数
[in,out]image图片实例
[in]angle图片旋转角度,必须以90度为倍数
返回
是否成功旋转图片

◆ rotateImageFile()

bool Dtk::Gui::DImageHandler::rotateImageFile ( const QString &  fileName,
int  angle 
)

顺时针旋转图片文件中的图片

读取 fileName 图片文件,顺时针旋转图片 angle 度,并将图片数据写回文件, 若存在错误,将返回 false ,错误信息通过 lastError() 获取

参数
[in]fileName图片文件路径
[in]angle图片旋转角度,必须以90度为倍数
返回
是否成功旋转并保存图片文件

◆ saveImage() [1/2]

bool Dtk::Gui::DImageHandler::saveImage ( const QImage &  image,
const QString &  fileName,
const QString &  format = QString() 
)

保存图片至文件,可指定保存的图片格式, 若存在错误,将返回 false ,错误信息通过 lastError() 获取

参数
[in]image图片实例
[in]fileName保存的文件路径
[in]format指定保存图片格式,默认为空,表示保持原格式
返回
是否成功保存图片

◆ saveImage() [2/2]

bool Dtk::Gui::DImageHandler::saveImage ( const QString &  fileName,
const QString &  format = QString() 
)

保存当前处理的图片至文件,可指定保存的图片格式, 若存在错误,将返回 false ,错误信息通过 lastError() 获取

参数
[in]fileName保存的文件路径
[in]format指定保存图片格式,默认为空,表示保持原格式
返回
是否成功保存图片

◆ setFileName()

void Dtk::Gui::DImageHandler::setFileName ( const QString &  fileName)

设置当前处理的图片文件路径

参数
[in]fileName图片文件路径

◆ sobelEdgeDetector()

static QImage Dtk::Gui::DImageHandler::sobelEdgeDetector ( const QImage &  img)
static

sobel边缘检测处理,用于图片锐化

参数
[in]img待处理的图片实例
返回
处理完成的图片实例

◆ supportFormats()

static QStringList Dtk::Gui::DImageHandler::supportFormats ( )
static

返回当前环境下 DImageHandler 可支持的图片格式,可动态加载 FreeImage 库以支持更多图片格式

返回
支持的图片格式

◆ thumbnail()

QImage Dtk::Gui::DImageHandler::thumbnail ( const QSize &  size,
Qt::AspectRatioMode  mode 
)

获取当前处理图片指定大小的缩略图,可调整宽高比适配模式

参数
[in]缩略图大小
返回
缩略图实例

◆ warmColorFilter()

static QImage Dtk::Gui::DImageHandler::warmColorFilter ( const QImage &  img,
int  intensity = 30 
)
static

为图片设置暖色滤镜并返回处理图片实例

参数
[in]img待处理的图片实例
[in]intensity滤镜处理强度,取值范围 -255 ~ 255 ,默认30
返回
处理完成的图片实例

该类的文档由以下文件生成: