CImage修改图片尺寸

CImage修改图片尺寸boolResizePicture(CStringstrSource,CStringstrTarget){intWIDTH=70;intHEIGHT=70;CImageoldimg;CImagenewimg;oldimg.Load(strSource);if(oldimg.IsNull())…

大家好,又见面了,我是你们的朋友全栈君。


bool ResizePicture(CString strSource, CString strTarget)
{
    int WIDTH = 70;
    int HEIGHT = 70;
    CImage oldimg;
    CImage newimg;
    oldimg.Load(strSource);
    if (oldimg.IsNull())
        return false;
    int nWidth = 0;
    int nHeight = 0;

    nWidth = oldimg.GetWidth();
    nHeight = oldimg.GetHeight();

    if (nWidth > WIDTH || nHeight > HEIGHT)
    {
        double dRatio = nWidth * 1.0 / nHeight;
        if (nWidth > nHeight)
        {
            nWidth = WIDTH;
            nHeight = (int)(nWidth / dRatio);
        }
        else
        {
            nHeight = HEIGHT;
            nWidth = (int)(nHeight * dRatio);
        }
    }

    if (!newimg.CreateEx(nWidth, nHeight, 24, BI_RGB))
    {
        oldimg.Destroy();
        return false;
    }

    int nPreMode = ::SetStretchBltMode(newimg.GetDC(), HALFTONE);
    newimg.ReleaseDC();
    oldimg.Draw(newimg.GetDC(), 0, 0, nWidth, nHeight, 0, 0, oldimg.GetWidth(),                       oldimg.GetHeight());
    newimg.ReleaseDC();
    ::SetBrushOrgEx(newimg.GetDC(), 0, 0, NULL);
    newimg.ReleaseDC();
    ::SetStretchBltMode(newimg.GetDC(), nPreMode);
    newimg.ReleaseDC();

    newimg.Save(strTarget);
    newimg.Destroy();
    oldimg.Destroy();

    return true;
}

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/149152.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • idea202112激活码永久【在线注册码/序列号/破解码】

    idea202112激活码永久【在线注册码/序列号/破解码】,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月19日
    39
  • SQL Where 字符串拼接「建议收藏」

    SQL Where 字符串拼接「建议收藏」declare@svarchar(100)set@s=’1,2,3′–法一:select*fromtbwherecharindex(‘,’+ltrim(id)+’,’,’,’+@s+’,’)>0–法二:exec(‘select*fromtbwhereidin(‘+@s+’)’)转载于:https://www.cnblo…

    2022年6月20日
    90
  • 图像传感器的 DVP 信号

    图像传感器的 DVP 信号一、DVP简述DVP是数字视频端口(digitalvideoport)的简称,传统的sensor输出接口,采用并行输出方式,DVP总线PCLK极限约在96M左右,所有DVP最大速率最好控制在72M以下,DVP是并口,需要PCLK、VSYNC、HSYNC、D[0:11]——可以是8/10/12bit数据,具体情况要看ISP或baseband是否支持。DVP接口在信号完整性方面受限制,速率也受限制。如图1所示,并口传输数据需要帧同步信号(Vsync

    2022年5月27日
    32
  • 感谢 Gridea,让我有动力写作

    感谢 Gridea,让我有动力写作1.真的要感谢Gridea,让我对写作产生热忱。一直有在各大博客平台输出的习惯,但是都没有持续更新。有的平台广告太多,写不下去。有的平台排版复杂,写文章1个小时,排版要2个小时。所以后面换成了静态

    2022年8月3日
    9
  • PHP程序开发之使用header定义一个php页面为utf-8编码或GBK编码

    PHP程序开发之使用header定义一个php页面为utf-8编码或GBK编码php页面为utf-8编码 header(“Content-type:text/html;charset=utf-8”); php页面为gbk编码 header(“Content-type:text/html;charset=gb2312”); php页面为big5编码 header(“Content-type:text/html;charset=b

    2022年7月11日
    30
  • mybatis拦截器不生效_自动助力器失效是什么原因

    mybatis拦截器不生效_自动助力器失效是什么原因现象:自定义插件注册成功,但是始终不进入拦截器方法;排查Mybatis拦截器是采用的责任链模式,一般拦截器中intercept方法中最后执行invocation.proceed()方法,将拦截器责任链向后传递;但是查看pageHelper源码可以发现,他的拦截器方法中并没有向后传递责任链,而是直接执行了查询:com.github.pagehelper.PageInterceptor#intercept思路想办法让自定义拦截器,在pageHelper拦截器之前执行;所以需要使自定义拦

    2025年10月15日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号