本文介绍了一种使用Flash与ASP.NET结合实现的拍照上传功能。该方案通过Flash捕获摄像头图像,并将图像数据逐行扫描转换为十六进制颜色值,再通过LoadVars对象发送到ASP.NET后端进行处理。后端接收到数据后,将其重构为Bitmap对象并保存为JPEG格式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

flash+asp.net 拍照源程序

//导入类
import flash.display.BitmapData;
//获取摄像
var cam:Camera = Camera.get ();
var my_video:Video;
my_video.attachVideo (cam);
//创建视频控件
var imger:BitmapData = new BitmapData (my_video._width, my_video._height);
var imgShow:MovieClip = createEmptyMovieClip ("bitmap_mc", this.getNextHighestDepth ());
var thehang:Number = 0;
var ID:Number;
var PX:Array = new Array ();
var filename:String;
//按钮初始状态
upfilebutton.enabled = false;
upfilebutton._alpha = 50;
viewbutton.enabled = false;
viewbutton._alpha = 50;
statedisplay._visible = false;
//相框列表树
var loadimageframe:mx.controls.ProgressBar;
var imageframe:mx.controls.Loader;
var framelist:mx.controls.Tree;
loadimageframe._visible = false;
loadimageframe.indeterminate = true;
loadimageframe.source = imageframe;
loadimageframe.mode = "polled";
var pbListener:Object = new Object ();
pbListener.complete = function (evt:Object)
{
 evt.target._visible = false;
};
loadimageframe.addEventListener ("complete", pbListener);
var treeDP_xml:XML = new XML ();
treeDP_xml.ignoreWhite = true;
treeDP_xml.onLoad = function (success:Boolean)
{
 if (success) {
  framelist.dataProvider = this.firstChild;
 }
};
treeDP_xml.load ("gallery_tree.xml");
var treeListener:Object = new Object ();
treeListener.change = function (evt:Object)
{
 var treeNode:XMLNode = evt.target.selectedItem;
 if (treeNode.attributes.src != undefined) {
  loadimageframe._visible = true;
  imageframe.load (treeNode.attributes.src);
 }
};
framelist.addEventListener ("change", treeListener);
//定义按钮事件
blurbutton.onRelease = capture;
viewbutton.onRelease = viewimg;
upfilebutton.onRelease = upload;
function capture ()
{
 statedisplay._visible = true;
 statedisplay.statebar.text = "正在拍下您的靓照,请稍等";
 blurbutton.enabled = false;
 blurbutton._alpha = 50;
 upfilebutton.enabled = false;
 upfilebutton._alpha = 50;
 viewbutton.enabled = false;
 viewbutton._alpha = 50;
 imger.draw (my_video);
 imgShow._x = 29.4;
 imgShow._y = 253.5;
 imgShow.attachBitmap (imger, 1);
 imger.draw (imageframe);
 imgShow._x = 29.4;
 imgShow._y = 253.5;
 imgShow.attachBitmap (imger, 1);
 thehang = 0;
 statedisplay._visible = false;
 blurbutton.enabled = true;
 blurbutton._alpha = 100;
 upfilebutton.enabled = true;
 upfilebutton._alpha = 100;
 statedisplay._visible = false;
}
function upload ()
{
 _root.ID = setInterval (scanPhoto, 50);
}
//扫描图像
function scanPhoto ()
{
 statedisplay._visible = true;
 statedisplay.statebar.text = "正在扫描并上传图像数据请稍等";
 var pixer:String;
 PX[thehang] = new Array ();
 for (w = 0; w < imgShow._width; w++) {
  pixer = imger.getPixel (w, thehang).toString (16);
  PX[thehang].push (pixer);
  state.text = "正在扫描图像,过程较慢请耐心等待……";
 }
 thehang += 1;
 //state.text ="正在存取数据";
 if (thehang >= imgShow._height) {
  clearInterval (_root.ID);
  //state.text ="图像扫描完成,如果要保存请点“上传”按钮";
  //blurbutton.enabled =true;
  //blurbutton._alpha =100;
  //upfilebutton.enabled =true;
  //upfilebutton._alpha =100;
  statedisplay._visible = false;
  upfile ();
 }
}
//上传图像
function upfile ()
{
 statedisplay._visible = true;
 statedisplay.statebar.text = "正在上传图像数据请稍等";
 blurbutton.enabled = false;
 blurbutton._alpha = 50;
 upfilebutton.enabled = false;
 upfilebutton._alpha = 50;
 viewbutton.enabled = false;
 viewbutton._alpha = 50;
 var sender = new LoadVars ();
 for (i = 0; i < my_video._height; i++) {
  sender["PX" + i] = _root.PX[i];
 }
 sender.sendAndLoad ("Cam.aspx", sender, "POST");
 sender.onLoad = function (success)
 {
  if (success) {
   //state.text ="上传完成“" + this.thisfile + "”";
   state.text = "上传完成";
   filename = this.thisfile;
  } else {
   state.text = "上传失败";
  }
  upfilebutton.enabled = true;
  upfilebutton._alpha = 100;
  blurbutton.enabled = true;
  blurbutton._alpha = 100;
  viewbutton.enabled = true;
  viewbutton._alpha = 100;
  statedisplay._visible = false;
 };
}
//浏览图片
function viewimg ()
{
 d = new Date ();
 getURL (filename, "_self");
}

 

asp.net 处理程序

 System.Text.StringBuilder sb=new System.Text.StringBuilder ();
  
   for(int i=0;i<Request.Form.Count ;i++)
   {
   
    if(Request.Form[i].ToString().Length==12)
    { 
     
     sb.Append(Request.Form[i].ToString().Substring(0,6));
     sb.Append(",");
     sb.Append(Request.Form[i].ToString().Substring(7));
     
     
    }
    else
    {
     sb.Append(Request.Form[i].ToString());
     
    }
    sb.Append(",");
   }
   
   
   string b=sb.ToString();
   string[] sarr=b.Split(",".ToCharArray());
   System.Drawing.Bitmap bitmap=new Bitmap(160,120);
  
   int z=0;

  
   for(int y=119;y>=0;y--)   
   {
    for(int x=0;x<160;x++)
    { 
     try
     {
      if(z<sarr.Length )
      {
       System.Drawing.Color c=System.Drawing.Color.FromArgb(System.Convert.ToInt32(sarr[z],16)); 
       bitmap.SetPixel(x,y,c);
      }
      
     }
     catch
     {
     
     }
         
     z=z+1;     
    }      
   }
   string filename=System.Guid.NewGuid().ToString()+".jpg"; 

 

 string bigdir=Server.MapPath("./") + "/images/";

  if(!System.IO.Directory.Exists(bigdir))
   {
    Scripting.FileSystemObjectClass fso=new Scripting.FileSystemObjectClass ();      
    fso.CreateFolder(bigdir);
   }
    bitmap.Save(bigdir+"/"+filename,System.Drawing.Imaging.ImageFormat.Jpeg);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值