zoukankan      html  css  js  c++  java
  • 代码修改图片DPI

    1.使用C# 修改图片DPI

    private void Form1_DragDrop(object sender, DragEventArgs e)
    {
    if (e.Data.GetDataPresent(DataFormats.FileDrop))
    {
    this.textBox1.Text = ((string[])e.Data.GetData(DataFormats.FileDrop.ToString()))[0];
    }

    }

    private void textBox1_DragOver(object sender, DragEventArgs e)
    {
    e.Effect = DragDropEffects.Copy;
    }

    using (Bitmap newImage = new Bitmap(Image.FromFile(this.textBox1.Text)))
                    {
                        newImage.SetResolution(300, 300);
                        newImage.Save("123.jpg",
                            System.Drawing.Imaging.ImageFormat.Jpeg);
                    }

    上面是winform窗口拖拽文件,然后在修改图片DPI。测试成功,可以正常修改。

    2. VC修改图片DPI

    代码原理和C#一致,但是不能修改成功。

    使用GDIPlus

    int GetImageCLSID(const WCHAR *format, CLSID *pCLSID)
    {
    //得到格式为format的图像文件的编码值,访问该格式图像的COM组件的GUID值保存在pCLSID中
    UINT num = 0;
    UINT size = 0;

    ImageCodecInfo* pImageCodecInfo = NULL;
    GetImageEncodersSize(&num, &size);

    if(size == 0)
    return FALSE; // 编码信息不可用

    //分配内存
    pImageCodecInfo = (ImageCodecInfo*)(malloc(size));
    if(pImageCodecInfo == NULL)
    return FALSE; // 分配失败

    //获得系统中可用的编码方式的所有信息
    GetImageEncoders(num, size, pImageCodecInfo);

    //在可用编码信息中查找format格式是否被支持
    for(UINT i = 0; i < num; ++i)
    {
    //MimeType:编码方式的具体描述
    if(wcscmp(pImageCodecInfo[i].MimeType, format) == 0)
    {
    *pCLSID = pImageCodecInfo[i].Clsid;
    free(pImageCodecInfo);
    return TRUE;
    }
    }

    free(pImageCodecInfo);
    return FALSE;
    }

    Gdiplus::Bitmap bitPic(m_wcFile,FALSE);
    bitPic.SetResolution(300,300);
    CLSID clImageClsid;
    GetImageCLSID(L"image/jpeg", &clImageClsid);
    bitPic.Save(L"123.jpg",&clImageClsid);

    原理都是一样的,为啥不行,原因待查,记录下

  • 相关阅读:
    VS2013
    有了门面,程序会更加体面!- pos软件基于三层架构 -09
    无熟人难办事?- 闲聊设计模式-迪米特法则
    三层架构,分层开发
    Filezilla 错误
    归档和压缩
    在Linux系统下用dd命令制作ISO镜像U盘启动盘
    脚本语言
    node.js知识点提取
    npm cnpm
  • 原文地址:https://www.cnblogs.com/nightnine/p/11728121.html
Copyright © 2011-2022 走看看