QT中怎样获取图片的分辨率?

abxialiang 2012-04-23 02:46:38
我想做一个显示TIFF图片的工具,但是现在遇到两个问题:
1.获取图片DPI,因为要显示图片的实际尺寸需要三个数据(图片像素,图片DPI,显示器DPI),然后根据公式计算出来的.就像windows自带的图片浏览器一样,它有一个显示实际尺寸的按钮.如下图是用windows自带的画图板查看的.



2.怎么读取多页图片,因为TIFF是多页图片格式的.

现在卡在1问题上了,用QPixmap读取图片,可以获取到图片像素,显示器DPI.但是根本没有获取图片DPI(图片分辨率)的方法.在网上和QT助手里找了很久依然无果,所以只好来发贴请教了.

环境:windows,QT4.7
...全文
1880 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
tt2com 2012-04-24
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]

为了不至于在这个问题上陷入僵局,我引入了Cxiamge类来获取这个信息,但仍然希望有更好的方式.接下来要处理多页的问题了.
[/Quote]
CXimage你确定兼容QT?怎么弄成兼容的,我也想玩玩。
话说CXimage 好像也没有分辨率的信息吧。
abxialiang 2012-04-24
  • 打赏
  • 举报
回复
为了不至于在这个问题上陷入僵局,我引入了Cxiamge类来获取这个信息,但仍然希望有更好的方式.接下来要处理多页的问题了.
abxialiang 2012-04-24
  • 打赏
  • 举报
回复
我的问题已全部结合cximage解决,它对QT是支持的,我是在VS2008环境下使用Qt,以下是核心代码,仅供后人参考.
bool CdlgImgwidget::_LoadIndexPage( QString Imgepath,uint PageIndex /*= 0*/ )
{
bool bReturn = false;
m_bShowView = false;
CxImage *pximage = new CxImage;
if(pximage->Load(Imgepath.toAscii().constData()))
{
UINT nCountPage=pximage->GetNumFrames();
if(nCountPage > PageIndex)
{
pximage->SetFrame(PageIndex);
pximage->Load(Imgepath.toAscii().constData());
if(pximage->IsValid())
{
HBITMAP bm = pximage->MakeBitmap(NULL);
*m_SrcPixmap = QPixmap::fromWinHBITMAP(bm);
m_ImgSrcSize = m_SrcPixmap->size();
int dvDpiX = m_SrcPixmap->logicalDpiX();
int dvDpiY = m_SrcPixmap->logicalDpiY();
int imgDpiX = pximage->GetXDPI();
int imgDpiY = pximage->GetYDPI();
m_ImgViewSize.setWidth(m_ImgSrcSize.width() * dvDpiX / imgDpiX + 6);
m_ImgViewSize.setHeight(m_ImgSrcSize.height() * dvDpiY / imgDpiY);
*m_ViewPixmap = m_SrcPixmap->scaled(m_ImgViewSize.width(),m_ImgViewSize.height(),Qt::KeepAspectRatio, Qt::SmoothTransformation);
m_nCurrentIndexPage = PageIndex;
bReturn = true;
m_bShowView = true;
}
}
}
delete pximage;
pximage = NULL;
return bReturn;
}
woshilaodao 2012-04-23
  • 打赏
  • 举报
回复
是不是分辨率和大小数值一样,可以去除图片大小
tt2com 2012-04-23
  • 打赏
  • 举报
回复
分辨率的定义
http://baike.baidu.com/view/7687.htm
http://baike.baidu.com/view/7687.htm#4
按下面的定义 应该是文件大小除以文件的面积
http://www.doc88.com/p-074309063111.html
abxialiang 2012-04-23
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

有了图像大小,分辨率我记得是可以算的。
[/Quote]

thank you tt2com:
但我实在没法由这些数据推导出其中的规律.
tt2com 2012-04-23
  • 打赏
  • 举报
回复
有了图像大小,分辨率我记得是可以算的。

16,802

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧