• 10696阅读
  • 4回复

如何修改 Qimage所获得的图片分辨率 [复制链接]

上一主题 下一主题
离线wangvance
 

只看楼主 倒序阅读 楼主  发表于: 2010-09-07
— 本帖被 XChinux 执行加亮操作(2010-09-07) —
  图片用QIMAGE获得后,如何修改图片大小。跟图片的格式有关吗。单单修改图片的大小。好像会变成一片黑的图。大小改变了 ,图的内容没了。希望大侠指教。
离线XChinux

只看该作者 1楼 发表于: 2010-09-07
修改图片尺寸?还是质量?
QImage里有各种方法可用,比如sacled()、save()等,请参考Assistant。
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线wangvance

只看该作者 2楼 发表于: 2010-09-09
修改尺寸,多谢版主指教
离线hqd_2008
只看该作者 3楼 发表于: 2010-11-03
{
    Q_UNUSED(pEvent);

    double wscale = 1.0;
    double hscale = 1.0;
    
    double pixwidth = static_cast<double>(m_image.width());
    double pixheight = static_cast<double>(m_image.height());
    double showwidth = static_cast<double>(width());
    double showheight = static_cast<double>(height());

    double Wscalerate = pixwidth / showwidth;
    double Hscalerate = pixheight / showheight;
    double compare = (Wscalerate > Hscalerate ? Wscalerate : Hscalerate);

    QRect _rect( showwidth/2.0 - pixwidth/compare/2.0,
                showheight/2.0- pixheight/compare/2.0,
                pixwidth/compare,
                pixheight/compare);

    QRect _midrect( (showwidth/2.0-pixwidth/2.0),
                   (showheight/2.0-pixheight/2.0),
                   pixwidth,
                   pixheight );

    QPainter painter(this);  

    painter.save();

    painter.translate(showwidth/2.0, (showheight/2.0));
    painter.scale(wscale, hscale);
    painter.translate(-(showwidth/2), -(showheight/2.0));

    if (compare < 1.0)
        painter.drawImage(_midrect, m_image);
    else
        painter.drawImage(_rect, m_image);
    
    painter.restore();
    //QPainter p(this);
    //p.drawImage((SCREEN_WIDTH-m_image.width())/2, (SCREEN_HEIGHT-m_image.height())/2,m_image);
}
离线hqd_2008
只看该作者 4楼 发表于: 2010-11-03
仅供参考
快速回复
限100 字节
 
上一个 下一个