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)
全栈程序员-站长的头像全栈程序员-站长

相关推荐

  • Ubuntu 安装使用git

    Ubuntu 安装使用git

    2021年6月12日
  • L2-014列车调度(最长上升子序列LIS)[通俗易懂]

    L2-014列车调度(最长上升子序列LIS)[通俗易懂]原题链接最长上升子序列火车站的列车调度铁轨的结构如下图所示。两端分别是一条入口(Entrance)轨道和一条出口(Exit)轨道,它们之间有N条平行的轨道。每趟列车从入口可以选择任意一条轨道进入,最后从出口离开。在图中有9趟列车,在入口处按照{8,4,2,5,3,9,1,6,7}的顺序排队等待进入。如果要求它们必须按序号递减的顺序从出口离开,则至少需要多少条平行铁轨用于调度?输入格式:输入第一行给出一个整数N (2 ≤ N ≤10​5​​ ),下一行给出从1到N的整数序号的一个重排列。数字间

    2022年8月8日
  • windows bat批处理基础命令学习教程「建议收藏」

    windows bat批处理基础命令学习教程「建议收藏」windowsbat批处理基础命令学习教程

    2022年8月22日
  • dw8制作html手机兼容视频,Dreamweaver8在网页中插入Flash视频

    dw8制作html手机兼容视频,Dreamweaver8在网页中插入Flash视频在Dreamweaver的“文档”窗口中打开index.html页面,插入一个三列的表格,在由三列组成的表格的中间一列中放置的图形之上单击一次。选择“插入”>“媒体”>“Flash视频”。在“插入Flash视频”对话框中,从“视频类型”弹出式菜单中选择“渐进式下载视频”。关于…关于Flash视频使用Dreamweaver中的“插入Flash视频”命令,可将…

    2022年8月30日
  • socket 编程入门教程(五)UDP原理:1、设计UDP server类

    socket 编程入门教程(五)UDP原理:1、设计UDP server类

    2021年8月29日
  • Vista初探_Vista Alegre

    Vista初探_Vista Alegre昨天安装了手中的WindowsVistaBusiness,经过几个小时的摸索,我对Vista这个大块头有了一些个人体会,拿出来给大家分享。一、安装及激活:从安装开始说,在我安装之前,我已经有WindowsXP和Ubuntu两套操作系统,启动由Linux的Grub引导,如何把Vista装进硬盘又不影响Ubuntu的启动是第一个需要解决的问题。(以下括号内为题外话,如果你觉…

    2022年10月11日

发表回复

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

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