Skip Navigation Links
技术文档
·网站建设
·软件使用
·图形设计
·程序开发
·网络应用
·电脑技巧
 
公司介绍
·公司简介
·索仕SRCOS网络应用平台
·索仕网站管理系统
·影视广告制作
·联系我们
 
 

生成整齐,美观的缩略图

7/3/2008 10:21:24 AM

需求:电子商务中有大量的图片要丰前台显示,而这些图片大部分由客户自己上传,图片的规格也是多种多样(主要择时纵横比例)。怎样让这些图片在前台整齐且美观的显示呢?

目的:整齐:固定纵横比例;美观:图片不变型,也就是按比例缩放。

假设:假如我们要在前台的一个Div(别名:相框)中放一张图(别名:图A),相框的宽度为120px,高度为:90px。而图A的原图的宽度为为1414px,高度为:886px.
显然相框与图A的原图的比例不一致。为了整齐且美观,我们希望将图A处理成56*96.然后把她居中的放在相框(120*90)中。

方案:我们采用.net技术,通过GDI操作图片:

实施:不想多说(相信博友们都应该看得懂)先贴出我的图像处理类(注释还算清楚):

 

生成整齐,美观的缩略图using System;
生成整齐,美观的缩略图
using System.Drawing;
生成整齐,美观的缩略图
using System.IO;
生成整齐,美观的缩略图
生成整齐,美观的缩略图
namespace Ants.Tools
{
生成整齐,美观的缩略图    
public class Image
    
{
        
属性
生成整齐,美观的缩略图
生成整齐,美观的缩略图        
private bool ThumbnailCallBack()//GDI+委托
        {
生成整齐,美观的缩略图            
return false;
生成整齐,美观的缩略图        }

        
/// <summary>
生成整齐,美观的缩略图        
/// 缩略图片的函数
生成整齐,美观的缩略图        
/// </summary>
生成整齐,美观的缩略图        
/// <param name="OK">用来判断转换是否成功</param>
生成整齐,美观的缩略图        
/// <returns>处理好的图片缩略图放入内存中</returns>

生成整齐,美观的缩略图        public MemoryStream getThumb(out bool OK)
        
{
生成整齐,美观的缩略图            OK
=false;
生成整齐,美观的缩略图            
int X, Y;
生成整齐,美观的缩略图            System.Drawing.Image myThumbnail 
= null;
生成整齐,美观的缩略图            
try
            
{
生成整齐,美观的缩略图                Bitmap myBitmap 
= new Bitmap(Path);
生成整齐,美观的缩略图                X 
= myBitmap.Width;
生成整齐,美观的缩略图                Y 
= myBitmap.Height;
生成整齐,美观的缩略图                
decimal a = (decimal)X / (decimal)Y;//原图片的比例
生成整齐,美观的缩略图
                decimal b = (decimal)Width / (decimal)Height;//相框的比例
生成整齐,美观的缩略图
                System.Drawing.Image.GetThumbnailImageAbort myCallBack = new System.Drawing.Image.GetThumbnailImageAbort(ThumbnailCallBack);
生成整齐,美观的缩略图                
生成整齐,美观的缩略图                
int newheight, newwidth;
生成整齐,美观的缩略图                
if (b > a)
                
{
生成整齐,美观的缩略图                    newheight 
= Height;
生成整齐,美观的缩略图                    newwidth 
=(intdecimal.Round(newheight * a,0,MidpointRounding.AwayFromZero);
生成整齐,美观的缩略图                }

生成整齐,美观的缩略图                
else
                
{
生成整齐,美观的缩略图                    newwidth 
= Width;
生成整齐,美观的缩略图                    newheight 
= (int)decimal.Round(Width / a, 0, MidpointRounding.AwayFromZero);
生成整齐,美观的缩略图
生成整齐,美观的缩略图                }

生成整齐,美观的缩略图                myThumbnail 
= myBitmap.GetThumbnailImage(newwidth, newheight, myCallBack, IntPtr.Zero);//生成缩略图
生成整齐,美观的缩略图
               OK=true;
生成整齐,美观的缩略图               myBitmap.Dispose();               
生成整齐,美观的缩略图            }

生成整齐,美观的缩略图            
catch
            
{
生成整齐,美观的缩略图                OK
= false;
生成整齐,美观的缩略图            }

生成整齐,美观的缩略图            System.IO.MemoryStream ms 
= new System.IO.MemoryStream();
生成整齐,美观的缩略图            myThumbnail.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
生成整齐,美观的缩略图          
生成整齐,美观的缩略图            
return ms;
生成整齐,美观的缩略图        }

生成整齐,美观的缩略图    }

生成整齐,美观的缩略图}

生成整齐,美观的缩略图


如何应用此类呢?还是贴代码:
1.新建一个aspx页面,放一个<img>标签
代码如下:
 

生成整齐,美观的缩略图Code


 

2.再建一个ashx文件
代码如下:

生成整齐,美观的缩略图Code


 

生成的效果如下
生成整齐,美观的缩略图

那张图和比例也太过分啦。呵呵...,欢迎生成整齐,美观的缩略图

作者:Ants 来源:博客园
 
 
 
昆明索仕科技开发有限公司 版权所有 Copyright© 2002-2010 Kunming Source Technology Exploitive Co.,LTD. All Rights Reserved.
电话:0871-5627877 业务QQ:163871 联系我们
本站基于:索仕网站信息管理系统建设 版本 2.0.4325