手机
当前位置:查字典教程网 >编程开发 >C#教程 >C#使用GDI+创建缩略图实例
C#使用GDI+创建缩略图实例
摘要:本文实例讲述了C#使用GDI+创建缩略图的方法,分享给大家供大家参考。具体方法分析如下:C#的Gdi+还是相当好用的。创建缩略图步骤如下:1...

本文实例讲述了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(&num, &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 < num; ++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+创建缩略图实例】相关文章:

C#简单的加密类实例

C#使用DllImport调用非托管的代码的方法

C# 调用C++写的dll的实现方法

C#生成注册码的实例代码

C# 一个WCF简单实例

C# 获取枚举值的简单实例

c# 网址压缩简单实现短网址

C#灰度化图像的实例代码

C#数据结构之循环链表的实例代码

C#中使用反射获取结构体实例及思路

精品推荐
分类导航