ITPub博客

首页 > 应用开发 > IT综合 > net2.0 生成缩略图,与指定比例

net2.0 生成缩略图,与指定比例

原创 IT综合 作者:hljhrbsjf 时间:2011-05-26 14:19:59 0 删除 编辑
    //int_Height int_Width 指定高度和指定宽度 input_Imgfile,out_ImgFile为原图片和缩小后图片的路径。
  1. public static void Thumbnail (int int_Width, int int_Height, string input_ImgFile, string out_ImgFile)
  2. {
  3. System.Drawing.Image oldimage = System.Drawing.Image.FromFile(input_ImgFile);
  4. float New_Width; // 新的宽度
  5. float New_Height; // 新的高度
  6. float Old_Width,Old_Height; //原始高宽
  7. int flat = 0;//标记图片是不是等比
  8. int xPoint = 0;//若果要补白边的话,原图像所在的x,y坐标。
  9. int yPoint=0;
  10. //判断图片
  11. Old_Width = (float)oldimage.Width;
  12. Old_Height = (float)oldimage.Height;
  13. if ((Old_Width / Old_Height) > ((float)int_Width / (float)int_Height)) //当图片太宽的时候
  14. {
  15. New_Height = Old_Height * ((float)int_Width / (float)Old_Width);
  16. New_Width = (float)int_Width;
  17. //此时x坐标不用修改
  18. yPoint = (int)(((float)int_Height - New_Height) / 2);
  19. flat = 1;
  20. }
  21. else if ((oldimage.Width / oldimage.Height) == ((float)int_Width / (float)int_Height))
  22. {
  23. New_Width = int_Width;
  24. New_Height = int_Height;
  25. }
  26. else
  27. {
  28. New_Width = (int)oldimage.Width * ((float)int_Height / (float)oldimage.Height); //太高的时候
  29. New_Height = int_Height;
  30. //此时y坐标不用修改
  31. xPoint = (int)(((float)int_Width - New_Width) / 2);
  32. flat = 1;
  33. }
  34. // ===缩小图片===
  35. System.Drawing.Image thumbnailImage = oldimage.GetThumbnailImage((int)New_Width, (int)New_Height, new System.Drawing.Image.GetThumbnailImageAbort(ThumbnailCallback), IntPtr.Zero);
  36. Bitmap bm = new Bitmap(thumbnailImage);
  37. if (flat != 0)
  38. {
  39. Bitmap bmOutput = new Bitmap(int_Width,int_Height);
  40. Graphics gc = Graphics.FromImage(bmOutput);
  41. SolidBrush tbBg = new SolidBrush(Color.White);
  42. gc.FillRectangle(tbBg,0, 0, int_Width, int_Height); //填充为白色
  43. gc.DrawImage(bm,xPoint, yPoint, (int)New_Width, (int)New_Height);
  44. bmOutput.Save(out_ImgFile);
  45. }
  46. else
  47. {
  48. bm.Save(out_ImgFile);
  49. }
  50. }
[@more@]

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/631872/viewspace-1050389/,如需转载,请注明出处,否则将追究法律责任。

上一篇: ora_init
请登录后发表评论 登录
全部评论
  • 博文量
    114
  • 访问量
    532403