显示图片范文(精选3篇)
显示图片 第1篇
关键词:IM,文字聊天,字符,组件
QQ2013是采用C++语言开发的, 因此在表情处理方面具有得天独厚的优势, 可以完美实现表情的预览输入 (如图1) 。利用Adobe的Flex来编写跨平台程序 (包含PC、Android和IOS) , 具有速度快、成本低等优点。但是其编写的程序, 有时无法实现C++程序所能达到的效果。因此需要自行编写一些组件, 来实现Flex没法直接实现的效果。
●实现流程
1. 添加两个Text Area组件
启动Flash Builder后新建一个Flex项目, 在程序主类的Vgroup容器里添加两个Text Area组件 (一个作为输入框, 另一个作为显示框) , 两个Button按钮组件 (一个用于加载图片显示框, 另一个用于发送信息) 。
2. 准备XML文件
这个XML文件的作用是放置表情图片文件。打开文本工具新建一个文本文件, 选择另存为命令, 在另存为窗口下面的“编码”中选择“UTF-8”, 然后输入文件名并保存。
接下来输入表情文件的路径, 表情文件预先放在resources/images/expressions/Default目录里面, 表情文件的命名由smiley_00.png开始。这样, smiley_00.png表情文件的代码应该为:<smile><image Url>resources/images/expressions/Default/smiley_00.png</image Url></s m i l e>。这样, 第二张图应该是:<smile><image Url>resources/images/expressions/Default/smiley_01.png</image Url></s m i l e>。第三张图应该是:<smile><image Url>resources/images/expressions/Default/smiley_02.png</image Url></smile>。以此类推, 可将所有表情文件逐一加入。
3. 建立一个读取XML文件路径的类
要在工程中读取到这个XML, 就需要建立一个相应的类, 作用就是获取XML文件的路径, 因为只有获取到路径, 才有办法读取XML文件。图2为建立好的AS的类。
4. 建立一个用于存放读取到的XML路径的Model类
通过上面步骤可读取到的XML路径, 必须暂存起来, 这样才能方便后面的使用。而在Flex中用Model类来存储, 需要新建一个Model类:Model Images (如图3) 。
这个类的主要作用是将读取到的存放图片路径信息的XML文件里的相关字段存放在固定的位置, 方便图片的读取。
5. 加载图片信息
在主类初始化序列 (如图4) 时加载图片信息 (如图5) 。
在程序入口处就可将与表情相关的XML里的路径读取出来放在Model Images类里方便后面直接使用相关信息, 不用重复读取。
6. 建立一个Title Window组件
建立一个Title Window组件在初始化的时候加载Model Images的图片路径 (如图6) 。图7为初始化加载图片路径。的Model Images的数据赋值给Image对象 (如图8) , 如将图片路径赋值给Image对象的source属性。这样就实现了图片在Title Window组件里显示的效果。
当用户点击相应表情进行检测时, 便可执行预期事件。通过以上的步骤, 就可以实现类QQ的聊天表情效果了。
将上一步里存放图片路径等信息
参考文献
[1]Peter deHaan, How to use Flex button Component, Adobe Training and Tutorials, http://www.adobe.com/cn/devnet/flash/quickstart/button_component_as3.html#articlecontentAdobe_numberedheader_6.
[2]Chris Georgenes, Using the Adobe Flash Sprite Sheet Generator, Adobe Training and Tutorials, http://www.adobe.com/cn/devnet/flash/articles/using-sprite-sheet-generator.html.
[3]Sprite Sheet Workflow, ADC Presents, Adobe Training and Tutorials, http://tv.adobe.com/watch/adc-presents/sprite-sheet-workflow.
[4]Issues involving project assets in Flash, Tommi West, Adobe Training and Tutorials, http://www.adobe.com/cn/devnet/flash/articles/avoiding-mistakes-assets.html.
显示图片 第2篇
1 算法原理
马赛克效果的图片显示的基本思想就是将图片从形式划分为很多小块,然后利用Bitblt函数随机地拷贝这些图片块,并显示出来的动态过程。
1.1 图块大小的确定
图块的大小是否合适会直接影响图片的显示效果。可以在属性窗口查看原图的ScaleHeight和ScaleWidth的属性值得到原图的尺寸。根据需要划分的图块数目,确定小图块的尺寸。但是这样进行小图块尺寸的确定有些繁琐。为此可采用一个比较简单的办法,先将原图横向分为N块,然后用(1)式计算,得到纵向块图块的数目M,进而可以得到全部图块的总数。
M=N×图片.ScaleHeight/图片.ScaleW-
假设原图片大小为347×255像素,按以上计算得到M=11,即纵向分为11个图块,图块总数为165,每图块像素值为23×23。
1.2 各图块坐标的确定
在Visual Basic的绘图系统中,窗体的左上角为坐标原点。由于图片是二维的,为了表示这些图块的位置,可以使用两个二维数组与之对应。可以将图块左上角的横坐标表示为(2)式。
同样图标的纵坐标的数组表示与式(2)类似。下面以横向15个图块、纵向11行,每块宽23像素为例给出图块横、纵坐标的坐标值如表1所示。
结合数学公式,可以将图块的横、纵坐标表示为式(3)。
其中Px为数组中是图块横坐标的数值,Py为数组中是图块纵坐标的数值。
照马赛克的出图效果出图时,各图片的出现顺序是随机的,这是一种随机选号出图的方式。从图块编号的角度来看,图块编号是从1~n,图块编号是一维的,在这种情况下以Xm,M、Ym,n的方式进行选号出图在程序的设计上有所不便。因此可以将各图块的坐标事先赋给表示这个图块坐标的变量,然后在显示图片时按照对应图块的坐标确定这个图块的显示位置,在程序的实现上就方便多了。
1.3 随机数的产生
由于马赛克是随机选号出图的,在各号图块的坐标确定之后,则需要考虑如何能生成以起始图号和终止图号为闭区间的,互不重复的涵盖所有图块编号的随机数序列。
将随机生成的n个随机的整数存放在数组中,再用数组中的n个数据与图片中的图块相对应,然后以数组的下标为序读出其中的数据,用于控制图块的复制与显示,就可得到马赛克形式的出图效果。流程如图1所示。
1.4 图块的随机复制
若将n个图块随机的显示出来,可以利用计时器控件,在一定的时间间隔后,利用存放在数组中的各图块的坐标,结合随机生成的图块号,就可以使用Bitblt函数[1]将一个完整的图片,随机的复制其图片块并显示出来。
2 实现
2.1 界面设置
在VB中新建只有一个窗体的工程文件,再在窗体上添加两个图片框控件,并按表2设置好控件的相应属性。
2.2 代码
在窗体中添加如下的程序段。
2.3 结果
系统运行后的界面如图2所示。
3 结束语
本文对在VB中用Bitblt函数实现图片的马赛克效果显示,API函数是一系列很复杂的函数,编程人员可以用不同的编程语言调用API函数,编写出在Windows操作系统中运行的应用程序。
参考文献
[1]赵文东,王素珍,赵杰.在VB中用Wi-nAPI函数放置″透明″的图片[J].西安:现代电子技术,2002(4):67-68.
[2]牛又奇,孙建国.Visual Basic程序设计教程[M].苏州:苏州大学出版社,2-002.
显示图片 第3篇
在数据库驱动的网页中,图片的来源一般可以分为两种。一种是从服务器上的某个目录下直接下载图片文件,这种方式下,数据库中相应字段保存的是存放路径及文件名(也称为文件全名);另一种来源是数据库中Image类型或Binary类型字段保存的文件字节流[1,2]。由于第二种方式具有便于数据备份和转移、容易维护数据一致性等优点而被广泛使用。本文在以字节流作为图片来源的条件下,介绍两种显示图片到网页中指定位置(表格、div或其他控件)的方法,并对两种方法进行综合比较研究。
要对数据库进行访问,还需考虑数据访问技术。目前很多研究人员已经基于微软的ADO.NET开发出各自通用的数据库访问组件[4],其共同之处均为对开发平台提供的数据访问类进行封装以实现隐藏和重用。但是在.NET 3.5推出的新功能LINQ to SQL中,数据访问问题得到了更高效和优雅的解决。本文的研究采用LINQ to SQL技术。
1 常用方法
目前在技术书籍、学术期刊和网站论坛上广泛介绍的均为此法。使用这种方法的步骤为:
1)在要显示文字及其他类型数据的综合内容页(不妨命名为Content.aspx)上,确定图片摆放的位置及尺寸,通常使用Image控件;
2)将图片所在行的关键字作为参数从综合内容页传递到图片显示页(不妨命名为Photo.aspx),通常使用Request对象或者Session对象;
3)在图片显示页的页面载入方法中,获取参数,执行查询得到字节数组,然后使用Response对象将图片写到aspx页面上。
4)设置Image控件的ImageUrl属性指向图像显示页。
典型的代码如下:
在综合内容页的Page_Load()方法中,有如下代码:
2 本文方法
运用本文介绍的显示图片,只需要两步:
1)直接使用查询得到的字节流在服务器指定的文件夹下生成图片文件,文件名使用随机生成的12位字符串(参见文献[5]中介绍的一种方法GenerateRandomName());
2)设置Image控件的ImageUrl属性显示图片。
典型的代码如下:
3 性能测试及分析
本文使用Microsoft Web Application Stress Tool 1.1对两种方式显示的页面进行压力测试,测试机器的硬件配置为:Intel处理器E5800 3.2G,2GB DDR3-1333内存,500G硬盘;操作系统为Windows Server 2003 Standard R2 32位简体中文版。测试结果如表1所示:
在表1中,25th Percentile=12.51,意思是小于12.51的观察值个数占25%;50th Percentile=15.13意思是小于15.13的观察值个数占百分之50,也意味着大于等于12.51而小于15.13的观察值占25%;综合上述测试数据,可以看出本文提出的方法,在Hit Count(页面命中计数),Time to first/last byte(in milliseconds)(从提交请求到开始接收第一个/最后一个字节的时间,以毫秒计),Socket Errors(套接字错误)等指标上,本文介绍的方法均优于常用的方法。
4 结语
本文在介绍从数据库读取图片到web页面上的常用方法后,提出了一种新的显示图片的方法,且该方法的多项测试指标高于常用方法。由于需要在服务器的指定文件夹下缓存图片文件,在浏览器端的请求页面关闭后,这些缓存图片不会自动删除,所以必须编写额外的服务程序来定时(或当文件夹的容量增长到阈值时)清除所有的过期缓存图片。这点局限性,无疑增加了使用本文方法的工作量。因而在对页面的性能没有特殊要求时,常用的图片显示方法仍然具有较高的实用性。
参考文献
[1]郑晓菊.基于ASP.NET实现图片的存取[J].五邑大学学报(自然科学版),2005,19(12):61-63.
[2]赵燕军,王旭阳,马宇衡等.用ASP.NET实现对Image类型数据的存取[J].无线电工程,2006,36(8):17-18.
[3]David Hayden.Saving and Displaying Photos in SQL Server using ASP.NET[EB/OL].http://davidhayden.com/blog/dave/archive/2006/07/25/SavingDisplayingPhotosInSQL ServerUsingASPNET.aspx
[4]孙仁鹏.ADO.NET在多层模式下应用的研究[J].计算机工程与设计,2010,31(16):3621-3624