知识大全 ASP.NET中图象处理过程详

Posted

篇首语:读书不要贪多,而是要多加思索,这样的读书使我获益不少。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 ASP.NET中图象处理过程详相关的知识,希望对你有一定的参考价值。

ASP.NET中图象处理过程详  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

    在使用ASP的时候 我们时常要借助第三方控件来实现一些图象功能 而现在 ASP NET的推出 我们已经没有必要再使用第三方控件来实现 因为ASP NET已经具有强大的功能来实现一些图象处理 现在 我们就来看看怎样使用ASP NET的这一强大功能

    一 System Drawing的使用

    以下的举例将演示在内存中生成一张图片 然后 将这张图片通过网页显示出来 需要了解的是 我们这里输出的不是HTML效果 而是实实在在的图片(图象) 我们可以使用“另存为…”将输出图象保存起来

    我们先来看看效果

     我们看到 这张图片是一个渐变背景上有“看见了吗”几个字 当然 这个效果在PhotoShop等图象处理软件里面很容易实现 但是 一些与数据库结合 的应用我们不可能将所有图片都事先设计出来 这时候 利用ASP NET来实现这些功能就显得很重要了 我们来看源代码

    <%@pagelanguage="vb"contenttype="image/jpeg"%>

    <%@importnamespace="system drawing"%>

    <%@importnamespace="system drawing imaging"%>

    <%@importnamespace="system drawing drawing d"%>

    <%

     清空Response

    response clear

     建立一个 * 大小 bit的BMP图象

    dimimgOutputasNewbitmap( pixelformat format bpprgb)

     根据以上BMP建立一个新图象

    dimgasgraphics=graphics fromimage(imgOutput)

    g clear(color Green)

    g smoothingMode=smoothingMode antiAlias

    g drawString("看见了吗?" Newfont("黑体" fontstyle bold) newSolidBrush(Color White) NewpointF( ))

      g FillRectangle(NewlinearGradientBrush(Newpoint( ) Newpoint( ) color fromArgb( )

  color fromArgb( )) )

    imgOutput save(response outputstream imageformat jpeg)

    g dispose()

    imgOutput dispose()

    response end

    %>

     在以上代码中 我们看到和数据库程序不同 这里专门引入了图象处理的名字空间system drawing等 程序首先清空了Response 确保没 有输出 然后 程序建立了一个 乘 大的BMP图象 再在这个基础上建立一个新图象 建立图象以后 我们首先“画”出了字符串“看见了吗” 该字符 串为 大粗黑体 颜色为白色 位置为( ) 最后 我们实现渐变效果

    以上举例很简单 但是如果和数据库结合 我们可以实现很多使用ASP可能不敢想的效果

    二 读取和改变图象文件大小

    读取图片?直接使用HTML不就可以了?当然可以 我们这里只是提供一种选择和方法来实现这一功能 具体这一功能的使用 我们可能需要在实践中更多的学习 先来看程序源代码

    <% importallrelevantnamespaces%>

    <%@importnamespace="System"%>

    <%@importnamespace="System Drawing"%>

    <%@importnamespace="System Drawing Imaging"%>

    <%@importnamespace="System IO"%>

    <scriptrunat="server">

    SubsendFile()

    dimgasSystem Drawing Image=System Drawing Image FromFile(server mappath(request("src")))

    dimthisFormat=g rawformat

    dimimgOutputasNewBitmap(g cint(request("width")) cint(request("height")))

    ifthisformat equals(system drawing imaging imageformat Gif)then

    response contenttype="image/gif"

    else

    response contenttype="image/jpeg"

    endif

    imgOutput save(response outputstream thisformat)

    g dispose()

    imgOutput dispose()

    endsub

    SubsendError()

    dimimgOutputasNewbitmap( pixelformat format bpprgb)

    dimgasgraphics=graphics fromimage(imgOutput)

    g clear(color yellow)

    g drawString("错误!" Newfont("黑体" fontstyle bold) systembrushes windowtext NewpointF( ))

    response contenttype="image/gif"

    imgOutput save(response outputstream imageformat gif)

    g dispose()

    imgOutput dispose()

    endsub

    </script>

    <%

    response clear

    ifrequest("src")=""orrequest("height")=""orrequest("width")=""then

    callsendError()

    else

    iffile exists(server mappath(request("src")))then

    callsendFile()

    else

    callsendError()

    endif

    endif

    response end

    %>

     在以上的程序中 我们看到两个函数 一个是SendFile 这一函数主要功能为显示服务器上的图片 该图片的大小通过Width和Height设置 同时 程序会自动检测图片类型 另外一个是SendError 这一函数的主要功能为服务器上的图片文件不存在时 显示错误信息 这里很有趣 错误信息也 是通过图片给出的(如图)

    以上的程序显示图片并且改变图片大小 现在 我们将这个程序进一步 显示图片并且保持图片的长宽比例 这样 和实际应用可能比较接近 特别是需要制作电子相册或者是图片网站的时候比较实用 我们先来看主要函数

    FunctionNewthumbSize(currenidth currentheight)

    dimtempMultiplierasDouble

    ifcurrentheight>currenidththen

    tempMultiplier= /currentheight

    Else

    tempMultiplier= /currenidth

    endif

    dimNewSizeasNewSize(CInt(currenidth*tempMultiplier) CInt(currentheight*tempMultiplier))

    returnNewSize

    EndFunction

    以上程序是增加的一个函数NewthumbSize 该函数专门处理改变一会的图片大小 这个图片的长宽和原图片的长宽保持相同比例 其他部分请参考上文程序代码

    三 画图特效

    如果只是将图片显示在网页上 这样未免显得简单 现在 我们来进一步感受ASP NET的强大功能 我们将学习图象处理中常用的图象反转 图象切割 图象拉伸等技巧

    先来看看程序效果

    仔细看 我们可以找到各种图象处理效果 现在 我们来看看程序代码

    <%@PageLanguage="vb"Debug="True"%>

    <%@importnamespace="system drawing"%>

    <%@importnamespace="system drawing imaging"%>

    <%@importnamespace="system drawing drawing d"%>

    <%

    dimstrFilenameasstring

    dimiasSystem Drawing Image

    strFilename=server mappath(" /chris fsck jpg")

    i=System Drawing Image FromFile(strFilename)

    dimbasNewsystem drawing bitmap(i width i height pixelformat format bpprgb)

    dimgasgraphics=graphics fromimage(b)

    g clear(color blue)

     旋转图片

    i RotateFlip(System Drawing RotateFlipType Rotate FlipX)

    g drawimage(i Newpoint( ))

    i RotateFlip(System Drawing RotateFlipType Rotate FlipY)

    g RotateTransform( )

    g drawimage(i Newpoint( ))

    g RotateTransform( )

    g drawimage(i Newpoint( ))

    g RotateTransform( )

    g drawimage(i Newpoint( ))

    g RotateTransform( )

    g drawimage(i Newpoint( ))

    g RotateTransform( )

    g RotateTransform( )

    g drawimage(i Newrectangle( ) Newrectangle( i width i height ) GraphicsUnit Pixel)

    g RotateTransform( )

     拉伸图片

    g drawimage(i Newrectangle( ) Newrectangle( i width i height ) GraphicsUnit Pixel)

    g drawimage(i Newrectangle( ) Newrectangle( i width i height ) GraphicsUnit Pixel)

    g drawimage(i Newrectangle( ) Newrectangle( i width i height ) GraphicsUnit Pixel)

     切割图片

    g drawimage(i Newrectangle( ) GraphicsUnit Pixel)

    g drawimage(i Newrectangle( ) GraphicsUnit Pixel)

     旋转图片

    i RotateFlip(System Drawing RotateFlipType Rotate FlipX)

    g drawimage(i Newrectangle( ) GraphicsUnit Pixel)

    response contenttype="image/jpeg"

    b save(response outputstream imageformat jpeg)

    b dispose()

    %>

    在以上的程序中 我们看到实现图象处理的各种技巧 仔细观察 我们可以知道旋转图片其实是用了一个RotateFlip方法 而切割和拉伸图片 完全是通过设置DrawImage的不同参数来实现

  ASP NET的图象处理可以实现的功能很多 我们在这里其实只是简单的介绍 更多功能的应用 需要 cha138/Article/program/net/201311/14065

相关参考

知识大全 asp.net 使用存储过程时参数为空时的处理

  在写插入新记录的存储过程时存储过程的参数一般和实体类的属性对应  但在前台接收数据时不一定需要所有的实体类属性这样就有一些属性没有被赋值如果这些属性是引用类型而又没有被初始化在给存储过程参数赋值时

知识大全 比较IIS5、IIS6、IIS7的ASP.net请求处理过程

比较IIS5、IIS6、IIS7的ASP.net请求处理过程  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看

知识大全 ASP.NET调用存储过程方法

ASP.NET调用存储过程方法  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  根据返回值类型的不

知识大全 ASP.NET中如何调用存储过程

ASP.NET中如何调用存储过程  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  用ASPNET与

知识大全 在ASP.NET中调用存储过程方法新解

在ASP.NET中调用存储过程方法新解  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!在使用NET的

知识大全 ASP.NET利用存储过程实现分页

ASP.NET利用存储过程实现分页  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  首先说下思路写

知识大全 IIS处理Asp.net请求和 Asp.net页面生命周期

IIS处理Asp.net请求和Asp.net页面生命周期  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下

知识大全 在asp.net中使用存储过程

  存储过程的定义  CREATEprocedurepro_buyGoods  (  @GoodsNamevarchar()  @GoodsNumint  )  AS  declare@countas

知识大全 对比JSP和ASP.NET的存储过程

对比JSP和ASP.NET的存储过程  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!    在Jav

知识大全 ASP.NET中利用存储过程实现模糊查询

ASP.NET中利用存储过程实现模糊查询  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  一建立存