如何实现图片的随机生成与显示

随机|显示

图片的随机生成的原理,就是从数据库中随机读取记录,然后据其构造相应的图片,然后用二进制把其写入Response.OutputStream里。
从数据库中随机读取的原理如下:
set rowcount 1 select * from [yourtable] order by newid()
如果你的表中的数据的ID是连续的,也可以用C#Random类的next()方法来生成一个随机的ID,从而获得相应的记录,如下:
"select * from [yourtable] where [pkid]="+(new Random()).Next(1,1000);
就可以了。
已经从数据库中读取出来相应记录了,现在就应该利用读出来的记录作为参数来生成相应的图片,因为这里只是一个示范,传读取的参数只是一个字符串,当然也可以做更为实用,比如设置图片的样式等。下面的这个方法返回一个bitmap对象:
public Bitmap GetImage(string s)
{
Bitmap b=new Bitmap(1,1);
int width,height;
Font aFont=new Font("Times New Roman",16,System.Drawing.GraphicsUnit.Point);
Graphics graphics=Graphics.FromImage(b);
width=(int)graphics.MeasureString(s,aFont).Width;
height=(int)graphics.MeasureString(s,aFont).Height;
b=new Bitmap(b,new Size(width,height));
graphics=Graphics.FromImage(b);
graphics.Clear(Color.Black);
graphics.TextRenderingHint=TextRenderingHint.AntiAlias;
graphics.DrawString(s,aFont,new SolidBrush(Color.Yellow),0,0);
graphics.Flush();
return(b);
}
现在获得一个bitmap对象,现在就是输出了,我们只要在相应的事件中加入输出代码就可以了,下面的例子是放在page_load方法里的,代码如下:
Response.ContentType="image/GIF"
b.Save(Response.OutputStream,System.Drawing .Imaging .ImageFormat .Gif);
// MemoryStream ms=new MemoryStream();
// b.Save(ms,System.Drawing .Imaging .ImageFormat .Gif);
// ms.Position=0;
// byte [] t=new byte[ms.Length];
// ms.Read(t,0,(int)ms.Length);;
// Response.BinaryWrite(t);
上面的代码给了两种输出方法,一个是直接把bitmap保存到Response的输出流中去,另一方法是先把bitmap保存到一个流中,然后把流中数据库再写到一个字节数组中,然后用Response的二进制输出方法直接写到输出流中,其实也可以把ms的内容直接写到输出流去,实现图片的输出。

当然如果想在一个具体页面加载随机的图片的时候,就不能再用上面的方法了,因为上面输出到一个页面的时候只会出现页面的最上面,而且不能定位。想要输出到一个具体的页面时,需要在一个这个页面上设置一个Image控件,用来图片定位的。然后设置这张图片的ImageUrl为这上面写的那个网页的url就可以了。
具体效果可以参见
http://211.87.212.216/myguestbook/mytest/showimage.aspx
上述是页面是具体页面,其中的image控件的imageurl即为readimage.aspx,其为图片产生页面。

时间: 2024-10-30 20:39:32

如何实现图片的随机生成与显示的相关文章

java 怎么随机生成字符串显示在jsp页面上

问题描述 java 怎么随机生成字符串显示在jsp页面上 如上我要点击一个按钮生成一个随机的用户, 用户账号是一个随机的字符串,我还需要获得产生随机的次数,来统计 解决方案 1.直接用random生成数字,然后把数字拼接 2.创建字符数组,然后random出数字,获取对应数字下标的字符,再拼接 解决方案二: 一种是楼上说的方法,另一种就是你要记录次数,用数据库来生成 解决方案三: 用UUID生成,存进数据库,在数据库中统计次数 解决方案四: 你字符串要什么格式的(汉字,英文大小写,数字,特殊符号

PHP 获取目录下的图片并随机显示的代码_php技巧

当时想做一个随机更换背景图片的功能,用JavaScript写的话,程序流程应该是:建立一个图片数组->随机选择数组里其中一个值->生成样式并写入body标签. 可是用JS做的话,有以下缺点: 1.万一浏览器禁用了JS的话就失效了,而且写代码是需要考虑兼容性. 2.维护比较麻烦,图片的位置都存放在数组里. 于是我提议用PHP处理,可是我和她对PHP都是半桶水的,一时之间也想不出怎么做.今天时运高,看到一个PHP随机显示目录下图片的源码,学习一下,并分享之.  先看看原理:从一个目录里获取某类型文

网页中图片的随机显示

随机|网页|显示 图片随机显示是一个应用非常广泛的技巧.比如随机banner的显示,当你进入一个网站时它的banner总是不同的,或者总有内容不同的提示(tips),大家在网上浏览时会经常发现这样的例子.使用这种技术,不但能在一定的空间里放入更多的内容,还可以给人一种经常更新的假象喔.怎么样心动了吧?其实只要你有一点点html和javascript 的基础,一切都是这么简单.follow me,让我们来看看她随机的奥密. 让我们从一个简单的例子开始吧.平常我们在页面中加入图片都是用<img sr

让图片循环显示-让图片不随机展现,让它循环展现就好了

问题描述 让图片不随机展现,让它循环展现就好了 Random r = new Random(); pictureBox1.Image = Image.FromFile(path[r.Next(0,path.Length)]); 这是随机展现图片的代码,怎样将它改成循环图片展现,虽然可以用SWICTH加上timer控件达到目的,但如果图片太多酒觉得繁琐,可以在原基础上改不,精简一点,不随机,谢谢 解决方案 for ((int i=0;i<path.Length ;i++ ) { //此处可以加一个

js验证码问题,如何获取随机生成的验证码的值?怎么让输入的值和随机生成的验证码相比较?

问题描述 js验证码问题,如何获取随机生成的验证码的值?怎么让输入的值和随机生成的验证码相比较??? 解决方案 解决方案二:你至少得用一个东西来存放这个验证码的值吧?然后取出来再和你输入的值比较--比如使用隐藏域解决方案三:你现在是否有验证码的例子呢?一般都是存到session里面的,然后可以转换成小写进行对比!解决方案四:能具体举一个例子吗?谢啦!解决方案五:引用楼主的回复: js验证码问题,如何获取随机生成的验证码的值?怎么让输入的值和随机生成的验证码相比较??? 这好像是一个问题验证码就不

随机生成用户头像的PS插件+布局神器SHOELACE

  马住免费神器!今天这两枚神器,一个是PS扩展,可以随机生成用户头像,非常方便,一个是操作体验极佳的在线布局神器Shoelace,都是提升效率的好帮手 >>> 在一些 WEB 或者 APP UI设计项目里,有时候会使用到一些图片素材或是用户头像,今天分享的PS扩展插件 uberfaces 可以直接在PS上生成用户头像,非常方便快捷! Uberfaces 可以让用户随机生成男士或女士头像,也可以指性别,使用简单,下面来看看这个PS插件的介绍: 生成图像方法 1. 直接选区的方式来生成头像

利用随机数随机生成指定位数的字符串

关于随机生成密码的软件很多,js也可以利用随机数随机生成指定位数的密码.(小白学习记录,谢谢支持) js中关于随机数的Math对象中有一个Math.random()的函数,可以随机生成0-1之间的随机任意的数字.本实例利用该函数与Math.floor()函数随机生成字符串. 代码如下: </pre><pre name="code" class="html"><body> <div> 所需位数:<input typ

【PHP】PHP使用PHPExcel生成Excel表格文件(附带随机生成英文名函数)

[PHP]PHP使用PHPExcel生成Excel表格文件(附带随机生成英文名函数) 前言 由于业务需要,我们需要从业务中汇总数据,并生成Excel文件. 思路是这样的 PHP要导出Excel表格文件->找一个好用的第三方库吧->在Composer的Packages里找一个吧->PHPExcel这么多收藏,就它了! PHPExcel 概述 PHPExcel is a library written in pure PHP and providing a set of classes th

html如何将二进制图片数据流 在web上显示为图片

问题描述 html如何将二进制图片数据流 在web上显示为图片 求大神门的指点 急需解决 ............... 我是这么写的 document.getElementById('img').innerHTML= (e.data) 解决方案 e.data是从哪里来的?websocket发送的2进制数据还是什么?如果是2进制数据,用FileReader加载2进制数据生成base64的图片内容 ws.onmessage = function(evt) { var reader = new Fi