• <menu id="ywm6y"></menu>
    <input id="ywm6y"></input>
    <menu id="ywm6y"><code id="ywm6y"></code></menu>
    <input id="ywm6y"><acronym id="ywm6y"></acronym></input>
  • <menu id="ywm6y"></menu>
  • <menu id="ywm6y"></menu>
  • <input id="ywm6y"></input>
    <input id="ywm6y"></input>

    代码修改图片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);

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

    相关文章
    相关标签/搜索
    香港2019年六开彩资料精选