本文实例讲述了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设置可以大幅度的减小图像文件所占磁盘空间
代码如下://保存到文件
EncoderParametersencoderParameters;
//构造编码参数列表
//数组中只包含一个EncoderParameter对象
encoderParameters.Count=1;
encoderParameters.Parameter[0].Guid=EncoderQuality;
//参数类型为LONG
encoderParameters.Parameter[0].Type=EncoderParameterValueTypeLong;
//只设置一个参数
encoderParameters.Parameter[0].NumberOfValues=1;
ULONGquality;
//压缩JPEG图片质量为原来的80%
quality=80;
encoderParameters.Parameter[0].Value=&quality;
3.关于缩略图
我使用了一下Image的GetThumbnailImage,发现对于某些图像效果很不理想,(颜色较鲜艳的缩略图效果好点,但是对于那些色差不大整体又暗的图像效果就差劲了).这个时候使用Graphic配合Bitmap直接画缩略尺寸的图像效果挺好
代码如下:BOOLQImgProcess::CreateThumb(intcx,QBuf&out)
{
ASSERT(m_pImg!=NULL);
//创建缩略图
intnWidth=m_pImg->GetWidth();
if(cx>=nWidth)
{
returnTRUE;
}
intnHeight=m_pImg->GetHeight();
intnThumbHeight=nHeight*cx/m_pImg->GetWidth();
Bitmapbitmap(cx,nThumbHeight,PixelFormat24bppRGB);
Graphicsgraph(&bitmap);
graph.DrawImage(m_pImg,Rect(0,0,cx,nThumbHeight));
……
}
希望本文所述对大家的C#程序设计有所帮助。
您可能感兴趣的文章:深入c#GDI+简单绘图的具体操作步骤(一)深入c#GDI+简单绘图的具体操作步骤(三)深入c#GDI+简单绘图的具体操作步骤(四)BarCode条形码基于C#GDI+的实现方法详解C#利用GDI+绘制旋转文字等效果实例深入c#GDI+简单绘图的具体操作步骤(二)C#常用GDI+文字操作汇总C#使用GDI+实现添加中心旋转(任意角度)的文字C#利用GDI+画图的基础实例教程C#利用GDI+给图片添加文字(文字自适应矩形区域)
C#装饰者模式实例分析
C++制作俄罗斯方块
上述就是C#学习教程:C#使用GDI+创建缩略图实例分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/905805.html