c#

位置:IT落伍者 >> c# >> 浏览文章

用C#轻松地在DOTNET中实现缩略图


发布日期:2021年01月25日
 
用C#轻松地在DOTNET中实现缩略图
以前在页面上实现缩略图必须借助第三方组件现在有了NET就可以很轻松地实现缩略图下面就是实现缩略图的例子

关键字:C# ASPNET缩略图

实例下载:

ToThumbnailImageaspx

<%@ Page language=c# Codebehind=ToThumbnailImageaspxcs Src=ToThumbnailImageaspxcs AutoEventWireup=false Inherits=Exam_CToThumbnailImage %>

<html>

<head>

<title>Lion互动网络 =>生成缩略图</title>

</head>

<body>

<form id=Form method=post runat=server>

</form>

</body>

</html>

ToThumbnailImageaspxcs

using System;

using SystemCollections;

using SystemComponentModel;

using SystemData;

using SystemDrawing;

using SystemWeb;

using SystemWebSessionState;

using SystemWebUI;

using SystemWebUIWebControls;

using SystemWebUIHtmlControls;

using SystemDrawingImaging;

namespace Exam_C

{

/// <summary>

/// ToThumbnailImage 的摘要说明

/// </summary>

public class ToThumbnailImage : SystemWebUIPage

{

/*

Create By lion

:

Copyright (C) wwwLionSkyNet All rights reserved

Web:  ;

Email:  

*/

static Hashtable htmimes=new Hashtable();

internal readonly string AllowExt = jpe|jpeg|jpg|png|tif|tiff|bmp;

#region Web 窗体设计器生成的代码

override protected void OnInit(EventArgs e)

{

#region htmimes[jpe]=image/jpeg;

htmimes[jpeg]=image/jpeg;

htmimes[jpg]=image/jpeg;

htmimes[png]=image/png;

htmimes[tif]=image/tiff;

htmimes[tiff]=image/tiff;

htmimes[bmp]=image/bmp;

#endregion

//调用生成缩略图方法

ToThumbnailImages(lionskyjpgbgif);

}

#endregion

#region Helper

/// <summary>

/// 获取图像编码解码器的所有相关信息

/// </summary>

/// <param name=mimeType>包含编码解码器的多用途网际邮件扩充协议 (MIME) 类型的字符串</param>

/// <returns>返回图像编码解码器的所有相关信息</returns>

static ImageCodecInfo GetCodecInfo(string mimeType)

{

ImageCodecInfo[] CodecInfo = ImageCodecInfoGetImageEncoders();

foreach(ImageCodecInfo ici in CodecInfo)

{

if(iciMimeType == mimeType)return ici;

}

return null;

}

/// <summary>

/// 检测扩展名的有效性

/// </summary>

/// <param name=sExt>文件名扩展名</param>

/// <returns>如果扩展名有效返回true否则返回false</returns>

bool CheckValidExt(string sExt)

{

bool flag=false;

string[] aExt = AllowExtSplit(|);

foreach(string filetype in aExt)

{

if(filetypeToLower()==sExt)

{

flag = true;

break;

}

}

return flag;

}

/// <summary>

/// 保存图片

/// </summary>

/// <param name=image>Image 对象</param>

/// <param name=savePath>保存路径</param>

/// <param name=ici>指定格式的编解码参数</param>

void SaveImage(SystemDrawingImage imagestring savePathImageCodecInfo ici)

{

//设置 原图片 对象的 EncoderParameters 对象

EncoderParameters parameters = new EncoderParameters();

parametersParam[] = new EncoderParameter(EncoderQuality ((long) ));

imageSave(savePath ici parameters);

parametersDispose();

}

#endregion

#region Methods

/// <summary>

/// 生成缩略图

/// </summary>

/// <param name=sourceImagePath>原图片路径(相对路径)</param>

/// <param name=thumbnailImagePath>生成的缩略图路径如果为空则保存为原图片路径(相对路径)</param>

/// <param name=thumbnailImageWidth>缩略图的宽度(高度与按源图片比例自动生成)</param>

public void ToThumbnailImages(string sourceImagePathstring thumbnailImagePathint thumbnailImageWidth)

{

string SourceImagePath = sourceImagePath;

string ThumbnailImagePath = thumbnailImagePath;

int ThumbnailImageWidth = thumbnailImageWidth;

string sExt = SourceImagePathSubstring(SourceImagePathLastIndexOf())ToLower();

if(SourceImagePathToString()==SystemStringEmpty) throw new NullReferenceException(SourceImagePath is null!);

if(!CheckValidExt(sExt))

{

throw new ArgumentException(原图片文件格式不正确支持的格式有[ + AllowExt + ]SourceImagePath);

}

//从 原图片 创建 Image 对象

SystemDrawingImage image = SystemDrawingImageFromFile(HttpContextCurrentServerMapPath(SourceImagePath));

int num = ((ThumbnailImageWidth / ) * );

int width = imageWidth;

int height = imageHeight;

//计算图片的比例

if ((((double) width) / ((double) height)) >= f)

{

num = ((height * ThumbnailImageWidth) / width);

}

else

{

ThumbnailImageWidth = ((width * num) / height);

}

if ((ThumbnailImageWidth < ) || (num < ))

{

return;

}

//用指定的大小和格式初始化 Bitmap 类的新实例

Bitmap bitmap = new Bitmap(ThumbnailImageWidth num PixelFormatFormatbppArgb);

//从指定的 Image 对象创建新 Graphics 对象

Graphics graphics = GraphicsFromImage(bitmap);

//清除整个绘图面并以透明背景色填充

graphicsClear(ColorTransparent);

//在指定位置并且按指定大小绘制 原图片 对象

graphicsDrawImage(image new Rectangle( ThumbnailImageWidth num));

imageDispose();

try

{

//将此 原图片 以指定格式并用指定的编解码参数保存到指定文件

string savepath = (ThumbnailImagePath==null?SourceImagePath:ThumbnailImagePath);

SaveImage(bitmapHttpContextCurrentServerMapPath(savepath)GetCodecInfo((string)htmimes[sExt]));

}

catch(SystemException e)

{

throw e;

}

finally

{

bitmapDispose();

graphicsDispose();

}

}

#endregion

}

}

               

上一篇:C# 语言规范--1.12 命名空间和程序集

下一篇:VC.NET的Direct3D极速入门宝典