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);

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

  • 相关阅读:
    学习es6中class——整合阮一峰教程、MDN
    flex 整理 笔记
    面试题中常见的布局类问题总结
    跨域问题的总结
    js中函数传递参数,究竟是值传递还是引用传递?
    webpack 从入门到放弃
    浏览器的解析和执行过程
    Office Online Server – FILE TOO LARGE
    PowerShell中汉字与ASCII码相互转换
    查询SQLSERVER执行过的SQL记录(历史查询记录)
  • 原文地址:https://www.cnblogs.com/nightnine/p/11728121.html
Copyright © 2011-2022 走看看