<address id="jv157"></address>
<sub id="jv157"></sub>

      <address id="jv157"></address>

      <thead id="jv157"></thead>

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

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

        相关文章
        相关标签/搜索
        2020年正版综合资料