C#使用GDI+创建缩略图实例

2021-04-25 13:44

阅读:627

标签:ref   href   wim   关于   more   基本   ati   效果   server   

本文实例讲述了C#使用GDI+创建缩略图的方法,分享给大家供大家参考。具体方法分析如下:

C#的Gdi+还是相当好用的。创建缩略图步骤如下:

1. Image保存图像,需要一个CLSID的参数,它可以这样获得:


代码如下:

int   GetEncoderClsid(const   WCHAR*   format,   CLSID*   pClsid)

{

UINT     num   =   0;                     //   number   of   image   encoders

UINT     size   =   0;                   //   size   of   the   image   encoder   array   in   bytes

ImageCodecInfo*   pImageCodecInfo   =   NULL;

GetImageEncodersSize(#,   &size;);

if(size   ==   0)

return   -1;     //   Failure

pImageCodecInfo   =   (ImageCodecInfo*)(malloc(size));

if(pImageCodecInfo   ==   NULL)

return   -1;     //   Failure

GetImageEncoders(num,   size,   pImageCodecInfo);

for(UINT   j   =   0;   j  

{

if(   wcscmp(pImageCodecInfo[j].MimeType,   format)   ==   0   )

{

*pClsid   =   pImageCodecInfo[j].Clsid;

free(pImageCodecInfo);

return   j;     //   Success

}

}

free(pImageCodecInfo);

return   -1;     //   Failure

}

2. Image::Save的另外一个参数EncoderParameters可用于图像的压缩*(这是从网上抄下来的)

使用img/jpeg配合encoderParameters.Parameter[0].Value设置 可以大幅度的减小图像文件所占磁盘空间


代码如下:

// 保存到文件

EncoderParameters encoderParameters;

//构造编码参数列表

//数组中只包含一个EncoderParameter对象

encoderParameters.Count = 1;

encoderParameters.Parameter[0].Guid = EncoderQuality;

//参数类型为LONG

encoderParameters.Parameter[0].Type = EncoderParameterValueTypeLong;

//只设置一个参数

encoderParameters.Parameter[0].NumberOfValues = 1;

ULONG quality;

//压缩JPEG图片质量为原来的80%

quality = 80;

encoderParameters.Parameter[0].Value = &quality;

3. 关于缩略图

我使用了一下Image的GetThumbnailImage,发现对于某些图像效果很不理想,(颜色较鲜艳的缩略图效果好点,但是对于那些色差不大整体又暗的图像效果就差劲了). 这个时候使用Graphic配合Bitmap直接画缩略尺寸的图像效果挺好


代码如下:

BOOL QImgProcess::CreateThumb( int cx ,QBuf &out;)

{

ASSERT(m_pImg != NULL);

// 创建缩略图

int nWidth = m_pImg->GetWidth();

if (cx >= nWidth)

{

return TRUE;

}

int nHeight = m_pImg->GetHeight();

int nThumbHeight = nHeight * cx / m_pImg->GetWidth() ;

Bitmap bitmap(cx, nThumbHeight, PixelFormat24bppRGB);

Graphics graph(&bitmap;);

graph.DrawImage(m_pImg, Rect(0,0,cx,nThumbHeight));

……

}

希望本文所述对大家的C#程序设计有所帮助。

除声明外,跑步客文章均为原创,转载请以链接形式标明本文地址
  C#使用GDI+创建缩略图实例

本文地址:  http://www.paobuke.com/develop/c-develop/pbk23446.html




相关内容

技术分享图片
C#中foreach循环对比for循环的优势和劣势
技术分享图片
C#连接到sql server2008数据库的实例代码
技术分享图片
C#使用Redis的基本操作
技术分享图片
C#开发微信门户及应用(3) 文本消息和图文消息应答

技术分享图片
C#微信公众号开发 微信事件交互
技术分享图片
解决安装VS2008无法更改默认路径的问题
技术分享图片
C# 设计模式系列教程-代理模式
技术分享图片
验证码的三个常见漏洞和修复方法

C#使用GDI+创建缩略图实例

标签:ref   href   wim   关于   more   基本   ati   效果   server   

原文地址:http://www.cnblogs.com/paobuke/p/7920087.html


评论


亲,登录后才可以留言!