仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 534|回复: 8
打印 上一主题 下一主题

[学习教程] ASP网站制作之ASPImage组件制造水印的完成历程

[复制链接]
再见西城 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:19:46 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
ASP由于使用了COM组件所以它会变的十分强大,但是这样的强大由于WindowsNT系统最初的设计问题而会引发大量的安全问题。只要在这样的组件或是操作中一不注意,哪么外部攻击就可以取得相当高的权限而导致网站瘫痪或者数据丢失;历程  ASP利用组件
  aspImage是ServerObjects站点上十分好的一个组件,它可使我们使用Asp完成良多关于图形的处置功效,他的功效壮大,假如你必要懂得更具体的信息你能够会见它的官方网站,在这里就不讲怎样利用这个组件了,我们在这里要讲的是怎样完成这类组件,固然上面的例子中利用GDI+并非完成组件图形处置的独一办法,人人也能够本人尝尝其他的办法.
  以下是完成历程
  1、起首利用VisualC++的导游创建ATL项目

  2、接上去增加一个ATLActiveServerPage组件接口类

  3、天生称号为AspPicCom的类而且选择ASP外部工具Response

  4、在IAspPicCom接口上增加属性和办法,以下表
称号

种别

寄义

挪用办法

FontName属性字体称号字符串范例

利用办法
.FontName="宋体"FontSize属性字体巨细整型

利用办法
.FontSize=40FontStyle属性字体范例整形

Regular=0,
Bold=1,
Italic=2,
BoldItalic=3,
Underline=4,
Strikeout=8

利用办法
.FontStyle=8ImgFormat属性图形格局字符串范例

image/gif
image/jpeg
image/bmp
......

利用办法
.ImgFormat="image/gif"SetFontColor办法设置字体色彩利用办法
.SetFontColor255,3,242,4
下面的数字分离代表Alpha,Red,Green,BlueSetBackColor办法设置字体背景色彩利用办法
.SetBackColor255,3,242,4
下面的数字分离代表Alpha,Red,Green,BlueShowPic办法将图片发送到客户端利用办法
.ShowPic
  5、要在ASP组件中利用GDI+,必要到场一些代码
  1、你必要在Stdafx.h文件中到场上面两行:
  #include
  usingnamespaceGdiplus;
  并且必要毗连GDIPlus.lib库
  #pragmacomment(lib,"gdiplus.lib")
  2、声明ULONG_PTRgdiplusToken;为一个全局大概类的外部成员变量。
  3、在完成类的FinalConstruct函数中到场:
  GdiplusStartupInputgdiplusStartupInput;
  //初始化GDI+
  GdiplusStartup(&gdiplusToken,&gdiplusStartupInput,NULL);
  4、在FinalRelease函数中到场:
  GdiplusShutdown(gdiplusToken);
  如许你就能够利用GDI+供应的图形处置函数了。
  注:关于GDI+的利用你能够在以下网址找到参考
  http://msdn.microsoft.com/library/default.asp?url=/library/en-us/gdicpp/gdi+/gdi+.asp
  http://www.codeproject.com/vcpp/gdiplus/
  六接上去就是完成在四中列出的这些属性和办法,上面列出ShowPic办法的一段代码,其他代码请检察源代码
<P>  Bitmapbitmap(1,1,PixelFormat48bppRGB);
  Graphicsgraphics(&bitmap);
  USES_CONVERSION;
  Fontfont(OLE2CW(m_bstrFontName),(float)m_fFontSize,m_nFontStyle,UnitPoint,NULL);
  PointForigin(0,0);
  StringFormatformat;
  format.SetAlignment(StringAlignmentCenter);
  RectFboundRect;
  graphics.MeasureString(OLE2CW(m_bstrText),m_bstrText.Length(),&font,origin,&format,&boundRect);
  intnWidth=(int)boundRect.Width;
  intnHeight=(int)boundRect.Height;
  Bitmapbm(nWidth,nHeight,PixelFormat48bppRGB);
  Graphics*g=Graphics::FromImage(&bm);
  boundRect.Width=boundRect.Width*2;
  SolidBrushsolidbrush(m_cBackground);
  g->FillRectangle(&solidbrush,boundRect);
  SolidBrushSolidFont(m_cFontColor);
  PointFfPoint(0,0);
  g->DrawString(OLE2CW(m_bstrText),m_bstrText.Length(),&font,fPoint,&SolidFont);
  intresult;
  CLSIDpngClsid;
  result=GetCodecClsid(OLE2W(m_btrImgFormat),&pngClsid);
  HRESULThr;
  HGLOBALhGlobal=GlobalAlloc(GMEM_MOVEABLE,0);
  CComPtrpStm;
  if(FAILED(hr=CreateStreamOnHGlobal(hGlobal,TRUE,&pStm)))returnhr;
  bm.Save(pStm,&pngClsid,NULL);
  ULONGcElements=(ULONG)GlobalSize(hGlobal);
  LPBYTElpData=(LPBYTE)GlobalLock(hGlobal);
  SAFEARRAY*pArray=SafeArrayCreateVector(VT_UI1,0,cElements);
  for(UINTiElement=0;iElement<cElements;iElement++)
  {
  longidx=iElement;
  SafeArrayPutElement(pArray,&idx,((LPBYTE)lpData)+iElement);
  }
  GlobalUnlock(hGlobal);
  CComVariantvBytes;
  vBytes.vt=VT_ARRAY|VT_UI1;
  vBytes.parray=pArray;
  m_piResponse->Clear();
  m_piResponse->put_ContentType(m_btrImgFormat);
  m_piResponse->BinaryWrite(vBytes);
  m_piResponse->End();
  7、如今组件的完成部分就半途而废了,我们写一段ASP来测试以下这个组件
<P><%@LANGUAGE="VBSCRIPT"CODEPAGE="936"%>
<html>
<body>
<%
setPicture=Server.CreateObject("AspPic.AspPicCom")
picture.Text="你能瞥见我吗?我来自www.webjx.com!"
picture.FontName="黑体"
picture.FontSize=40
picture.ImgFormat="image/jpeg"
picture.FontStyle=1
Picture.SetFontColor255,3,242,4代表Alpha,Red,Green,Blue
Picture.SetBackColor10,243,42,54代表Alpha,Red,Green,Blue
Picture.ShowPic
setPicture=nothing
%>
</body>
</html>
  注:在利用前先注册组件regsvr32AspPic.dll
  翻开这个ASP网页,你将会看到以下的图片
  
  如今完成aspImage的详细思绪就讲完了,如今假如必要更多的效果,你能够本人丰厚这个组件
  题外话:这类组件的用处很广,如yahoo.com注册会员时会显现图形单词以避免盘算机主动注册,由于盘算秘密辨认图片上的笔墨是低效并且很不简单的事变,这类组件更多的是使用到图表的天生,如柱状图、馅饼图、波形图等等。
ASP由于使用了COM组件所以它会变的十分强大,但是这样的强大由于WindowsNT系统最初的设计问题而会引发大量的安全问题。只要在这样的组件或是操作中一不注意,哪么外部攻击就可以取得相当高的权限而导致网站瘫痪或者数据丢失;
小魔女 该用户已被删除
沙发
发表于 2015-1-19 08:47:35 | 只看该作者
ASP(ActiveServerPages)是Microsfot公司1996年11月推出的WEB应用程序开发技术,它既不是一种程序语言,也不是一种开发工具,而是一种技术框架,不须使用微软的产品就能编写它的代码,能产生和执行动态、交互式、高效率的站占服务器的应用程序。
谁可相欹 该用户已被删除
板凳
发表于 2015-1-27 19:52:56 | 只看该作者
代码的可重用性差:由于是面向结构的编程方式,并且混合html,所以可能页面原型修改一点,整个程序都需要修改,更别提代码重用了。
地板
发表于 2015-2-5 12:11:31 | 只看该作者
跟学别的语言一样,先掌握变量,流程控制语句(就是ifwhileselect)等,函数/过程,数组
兰色精灵 该用户已被删除
5#
发表于 2015-2-11 19:50:02 | 只看该作者
先学习用frontpage熟悉html编辑然后学习asp和vbscript建议买书进行系统学习
小女巫 该用户已被删除
6#
发表于 2015-3-2 17:54:03 | 只看该作者
下面简单介绍一下我学习ASP的方法,希望对想学习ASP的朋友有所帮助...
深爱那片海 该用户已被删除
7#
发表于 2015-3-11 05:05:41 | 只看该作者
运用经典的例子。并且自己可以用他来实现一些简单的系统。如果可以对他进行进一步的修改,找出你觉得可以提高性能的地方,加上自己的设计,那就更上一个层次了,也就会真正地感到有所收获。
admin 该用户已被删除
8#
发表于 2015-3-17 21:09:29 | 只看该作者
下面简单介绍一下我学习ASP的方法,希望对想学习ASP的朋友有所帮助...
若天明 该用户已被删除
9#
发表于 2015-3-25 03:00:37 | 只看该作者
ASP也是这几种脚本语言中最简单易学的开发语言。但ASP也是这几种语言中唯一的一个不能很好支持跨平台的语言。  因为ASP脚本语言非常简单,因此其代码也简单易懂,结合HTML代码,可快速地完成网站的应用程序。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2025-1-9 05:15

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表