注册 登录
编程论坛 ASP.NET技术论坛

动态生成image问题(紧急)

雪雨星风 发布于 2008-08-04 17:45, 1742 次点击
我填写一些信息  
姓名
年龄
身份证号
照片


信息填完后 怎么把这些信息生成到一张600*400的jpg图片里
为了防止伪造  给图片加一些杂色

有谁做过  帮帮忙了
15 回复
#2
雪雨星风2008-08-04 17:46
高手们帮忙解决一下了   小弟感激不尽
#3
雪雨星风2008-08-04 17:46
生成图片是为了方便打印和保存  还防止了随便改动
#4
蓝色畅想2008-08-04 22:33
基本信息我可以的 但是把照片放进去我没搞成功 下面是放你的基本信息 供 参考!

 protected void Page_Load(object sender, EventArgs e)
    {
        gethua();
    }
    protected void gethua()
    {
        Random random = new Random();

        Bitmap bt = new Bitmap(600,400,PixelFormat.Format24bppRgb);
        Graphics g = Graphics.FromImage(bt);
        Font fn = new Font("Tahoma",12,FontStyle.Bold);

        g.Clear(Color.RoyalBlue);
        g.DrawString("姓名:张三",fn,Brushes.White,new PointF(10,10));
        g.DrawString("年龄:33", fn, Brushes.White, new PointF(10, 30));
        g.DrawString("身份证:123456789", fn, Brushes.White, new PointF(10, 50));
               
        for (int i = 0; i < 25; i++)
        {
            int x1 = random.Next(bt.Width);
            int x2 = random.Next(bt.Width);
            int y1 = random.Next(bt.Height);
            int y2 = random.Next(bt.Height);
           
            g.DrawLine(new Pen(Color.GreenYellow), x1, y1, x2, y2);
        }

        
        Response.ContentType = "image/Jpeg";
        bt.Save(Response.OutputStream,ImageFormat.Jpeg);
      
    }
#5
雪雨星风2008-08-05 08:12
图片我也很是头疼  
g.DrawString("姓名:张三",fn,Brushes.White,new PointF(10,10));

它主要是不解读标签

但还是要谢谢你

#6
雪雨星风2008-08-05 09:16
没高手吗
#7
cyyu_ryh2008-08-05 11:23
用上传控件上传图片
把图片放到服务器的文件夹里面
数据库里存储图片服务器路径
上传时控制图片的大小就可以了
#8
雪雨星风2008-08-05 12:04
我要的效果是  把表格连同内容生成为一张图片
#9
bygg2008-08-05 12:36
照片也是一张图片,
用 g.DrawImage()方法就可以了.
#10
雪雨星风2008-08-05 13:11
System.Drawing.Image newimage = System.Drawing.Image.FromFile("~image/123.jpg");
g.DrawImage(newimage, 100, 100, 40, 70);  


我这样写怎么不行啊  老是报错
#11
雪雨星风2008-08-05 13:11
~image/123.jpg
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

异常详细信息: ~image/123.jpg

源错误:


行 46:         g.DrawLine(new Pen(Color.GreenYellow), 20, 90, 380, 90);
行 47:         g.DrawRectangle(new Pen(Color.CornflowerBlue), 20, 20, 360, 560);
行 48:         System.Drawing.Image newimage = System.Drawing.Image.FromFile("~image/123.jpg");
行 49:         g.DrawImage(newimage, 100, 100, 40, 70);      
行 50:         Response.ContentType = "image/Jpeg";
 

源文件: e:\练习\baoming\Default.aspx.cs    行: 48
#12
bygg2008-08-05 16:53
System.Drawing.Image image = System.Drawing.Image.FromFile(imagePath);
Bitmap bitmap = new Bitmap(image.Width, image.Height, PixelFormat.Format32bppArgb);
Graphics graphics = Graphics.FromImage(bitmap);
                //在指定位置并且按指定大小绘制 原图片 对象
graphics.DrawImage(image, new Rectangle(0, 0, image.Width, image.Height));  
.......
.......

注意:用Image时,一定要记得在用完以后关闭它,要不然你的内存会被一点一点吃掉.还有Bitmap也一样
#13
bygg2008-08-05 16:53
System.Drawing.Image newimage = System.Drawing.Image.FromFile(Server.MapPath("~image/123.jpg"));
#14
cyyu_ryh2008-08-05 17:16
我靠
题目看錯了
原来是向图片写字
#15
雪雨星风2008-08-06 09:51
谢谢各位了
#16
雪雨星风2008-08-06 13:09
[bo][un]bygg[/un] 在 2008-8-5 16:53 的发言:[/bo]

System.Drawing.Image image = System.Drawing.Image.FromFile(imagePath);
Bitmap bitmap = new Bitmap(image.Width, image.Height, PixelFormat.Format32bppArgb);
Graphics graphics = Graphics.FromImage(bitm ...

sing System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Drawing;
using System.Drawing.Imaging;
using
public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            gethua();            
        }
    }
    protected void gethua()
    {
        Random random = new Random();
        Bitmap bt = new Bitmap(351, 402, PixelFormat.Format24bppRgb);
        Graphics g = Graphics.FromImage(bt);
        Font fn1 = new Font("Tahoma", 10, FontStyle.Bold);         
        Font fn = new Font("Tahoma", 9, FontStyle.Bold);     
        g.Clear(Color.Honeydew);
        g.DrawString("中国电子学会电子设计初级工程师认证考试名", fn1, Brushes.Black, new PointF(20, 20));
        g.DrawString("准 考 证", fn1, Brushes.Black, new PointF(140, 50));
        g.DrawString("准考证号", fn, Brushes.Black, new PointF(14, 85));
        g.DrawString("CIE09101080004", fn, Brushes.Black, new PointF(90, 85));
        g.DrawString("考生姓名", fn, Brushes.Black, new PointF(14, 115));
        g.DrawString("李晓杰", fn, Brushes.Black, new PointF(90, 115));
        g.DrawString("考生性别", fn, Brushes.Black, new PointF(14, 145));
        g.DrawString("男", fn, Brushes.Black, new PointF(90, 145));
        g.DrawString("身份证号", fn, Brushes.Black, new PointF(14, 175));
        g.DrawString("410381198408272032", fn, Brushes.Black, new PointF(90, 175));
        g.DrawString("考试时间", fn, Brushes.Black, new PointF(14, 205));
        g.DrawString("2007年11月30号", fn, Brushes.Black, new PointF(90, 205));
        g.DrawString("考试科目", fn, Brushes.Black, new PointF(14, 235));
        g.DrawString("电子设计", fn, Brushes.Black, new PointF(90, 235));
        g.DrawString("考点名称", fn, Brushes.Black, new PointF(14, 265));
        g.DrawString("电子设计工程师证书", fn, Brushes.Black, new PointF(90, 265));
        g.DrawString("考场编号", fn, Brushes.Black, new PointF(14, 295));
        g.DrawString("9101080004", fn, Brushes.Black, new PointF(90, 295));
        g.DrawString("机位编号", fn, Brushes.Black, new PointF(196, 295));
        g.DrawString("080004", fn, Brushes.Black, new PointF(275, 295));
        g.DrawString("交通指南(由各考点提供)", fn, Brushes.Black, new PointF(14, 325));
        g.DrawString("在北京站可直接换乘环线地铁,在东四十条下车。", fn, Brushes.Black, new PointF(30, 340));      
        for (int i = 0; i < 500; i++)
        {
            int x1 = random.Next(bt.Width-20);            
            int y1 = random.Next(bt.Height-20);                                 
            bt.SetPixel(x1, y1, Color.FromArgb(random.Next()));            
        }
        for (int i = 0; i < 50; i++)
        {
            int x1 = random.Next(bt.Width-20);            
            int y1 = random.Next(bt.Height-20);
            int x2 = random.Next(1,30);            
            int y2 = random.Next(1,20);
            int x3 = random.Next(15,45);            
            int y3 = random.Next(70,270);
            g.DrawArc(new Pen(Color.FromArgb(random.Next())), x1, y1, x2, y2, x3, y3);
        }
        g.DrawLine(new Pen(Color.Black), 10, 75, 341, 75);
        g.DrawLine(new Pen(Color.Black), 10, 105, 243, 105);
        g.DrawLine(new Pen(Color.Black), 10, 135, 243, 135);
        g.DrawLine(new Pen(Color.Black), 10, 165, 243, 165);
        g.DrawLine(new Pen(Color.Black), 10, 195, 341, 195);
        g.DrawLine(new Pen(Color.Black), 10, 225, 341, 225);
        g.DrawLine(new Pen(Color.Black), 10, 255, 341, 255);
        g.DrawLine(new Pen(Color.Black), 10, 285, 341, 285);
        g.DrawLine(new Pen(Color.Black), 10, 315, 341, 315);
        g.DrawLine(new Pen(Color.Black), 80, 75, 80, 314);
        g.DrawLine(new Pen(Color.Black), 185, 285, 185, 314);
        g.DrawLine(new Pen(Color.Black), 265, 285, 265, 314);
        g.DrawLine(new Pen(Color.Black), 243, 75, 243, 195);
        g.DrawRectangle(new Pen(Color.CornflowerBlue), 10, 10, 331, 382);
        System.Drawing.Image newimage = System.Drawing.Image.FromFile("E:/练习/baoming/image/123.jpg");
        g.DrawImage(newimage, 245, 77, 95, 117);
        Response.ContentType = "image/Jpeg";
        bt.Save(Response.OutputStream, ImageFormat.Jpeg);        
    }   
}
当我打开vs第一次运行时 F5  生成一张图片   但是   我不关闭VS修改其中的信息   再次F5  再次生成一张图片
但是我右键另存这张图片   预览这张另存的图片时会发现另存的是打开vs第一次运行时 F5  生成的图片
这是为什么    是因为image没关闭的原因吗    image如何关闭
1