Csharp/C#教程:C#使用GDI+创建缩略图实例分享

本文实例讲述了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+给图片添加文字(文字自适应矩形区域)

标签: 缩略图 DI

C#装饰者模式实例分析

C++制作俄罗斯方块

上述就是C#学习教程:C#使用GDI+创建缩略图实例分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/905805.html

(0)
上一篇 2021年10月23日
下一篇 2021年10月23日

精彩推荐