首先要说,这里是一台客户端电脑上实用的是两个摄像头,获取不同的摄像头方法如下
import
it.sephiroth.mloaderWindow
import it.sephiroth.PrintScreen
myCam = Camera.get(); // 可以根据参数获取不同的Camera对象,0和1
myCam.setMode( 160 , 120 , 10 );
my_video.attachVideo(myCam);
var loader:mloaderWindow = this .createClassObject(mloaderWindow, " loader " , 10 , {_x:-1000, _y:-1000} )
// loader.setStyle("borderColor", 0x006699)
var listener:Object = new Object();
listener.onProgress = function(target:MovieClip, loaded:Number, total:Number) {
var perc = Math.round((loaded/total)*100)
loader.label = "Sending " + perc + "%"
loader.value = perc
}
listener.onComplete = function(target:MovieClip, load_var:LoadVars) {
loader.label = "Sending"
//获取图片的对象,我们实用的是apsx对象来获取的
load_var.send("makepic.php", "_self", "POST")
loader.close()
}
function print_me() {
var mc_x = 15;
var mc_y = 15;
my_video.attachVideo(null);
pn = new PrintScreen();
pn.addListener( listener );
pn.print(_root, 0, 0, 250, 120, mc_x, mc_y)
loader.label = "输出中 0%"
loader.open(true, true, true);
呵呵,到这里就剩下的是怎样获取图片了,当然我们得到的资料是实用php获取的,不过我是一个php盲,就斗胆的使用了aspx来获取了,代码如下(为了节省时间,我就全贴了)
import it.sephiroth.PrintScreen
myCam = Camera.get(); // 可以根据参数获取不同的Camera对象,0和1
myCam.setMode( 160 , 120 , 10 );
my_video.attachVideo(myCam);
var loader:mloaderWindow = this .createClassObject(mloaderWindow, " loader " , 10 , {_x:-1000, _y:-1000} )
// loader.setStyle("borderColor", 0x006699)
var listener:Object = new Object();
listener.onProgress = function(target:MovieClip, loaded:Number, total:Number) {
var perc = Math.round((loaded/total)*100)
loader.label = "Sending " + perc + "%"
loader.value = perc
}
listener.onComplete = function(target:MovieClip, load_var:LoadVars) {
loader.label = "Sending"
//获取图片的对象,我们实用的是apsx对象来获取的
load_var.send("makepic.php", "_self", "POST")
loader.close()
}
function print_me() {
var mc_x = 15;
var mc_y = 15;
my_video.attachVideo(null);
pn = new PrintScreen();
pn.addListener( listener );
pn.print(_root, 0, 0, 250, 120, mc_x, mc_y)
loader.label = "输出中 0%"
loader.open(true, true, true);
呵呵,到这里就剩下的是怎样获取图片了,当然我们得到的资料是实用php获取的,不过我是一个php盲,就斗胆的使用了aspx来获取了,代码如下(为了节省时间,我就全贴了)
using
System;
using System.Data;
using System.Configuration;
using System.Collections;
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 System.Drawing.Drawing2D;
using System.Drawing.Text;
public partial class GetPhoto : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
if (Request.Form["width"]!=null)
{
CreateImage("/");
}
}
}
private bool CreateImage(string Path)
{
int w = 0;
int h = 0;
try
{
w = int.Parse(Request.Form["width"]);
h = int.Parse(Request.Form["height"]);
}
catch (Exception ee)
{
Response.Write(ee.Message);
return false;
}
Bitmap newmap = new Bitmap(w, h);
int rows = 0;
int cols = 0;
Graphics gp = Graphics.FromImage(newmap);
gp.Clear(Color.White);
ImageCodecInfo myImageCodecInfo;
System.Drawing.Imaging.Encoder myEncoder;
EncoderParameter myEncoderParameter;
EncoderParameters myEncoderParameters;
myImageCodecInfo = ImageCodecInfo.GetImageEncoders()[1];
myEncoder = System.Drawing.Imaging.Encoder.Quality;
myEncoderParameters = new EncoderParameters(1);
myEncoderParameter = new EncoderParameter(myEncoder, 95L);
myEncoderParameters.Param[0] = myEncoderParameter;
gp.CompositingQuality = CompositingQuality.HighQuality;
gp.SmoothingMode = SmoothingMode.HighQuality;
gp.InterpolationMode = InterpolationMode.HighQualityBicubic;
gp.TextRenderingHint = TextRenderingHint.ClearTypeGridFit;
for (rows = 0; rows < newmap.Height; rows++) //循环图片高度
{
string px = Request["PX" + rows];
string[] c_row = px.Split(',');
for (cols = 0; cols < newmap.Width; cols++) //循环图片宽度
{
string values = c_row[cols];
if (values != "" && values != null)
{
string hex = values;
while (hex.Length < 6)
{//防止颜色丢失
hex = "0" + hex;
}
int r = int.Parse(hex.Substring(0, 2), System.Globalization.NumberStyles.HexNumber);
int g = int.Parse(hex.Substring(2, 2), System.Globalization.NumberStyles.HexNumber);
int b = int.Parse(hex.Substring(4, 2), System.Globalization.NumberStyles.HexNumber);
newmap.SetPixel(cols, rows, Color.FromArgb(r, g, b));
}
}
}
gp.DrawImage(newmap, 0, 0, w, h);
Path = Server.MapPath("Photo/")+"tmpPhoto.jpg";
//保存路径,修改这里
newmap.Save(Path, myImageCodecInfo, myEncoderParameters);
myEncoderParameters.Dispose();
gp.Dispose();
newmap.Dispose();
string strPicUrl = "Photo/tmpPhoto.jpg";
Response.Redirect("CatchPhoto.aspx?imgUrl="+Server.UrlEncode(strPicUrl));
return true;
}
}
好了,只要我们在指定的文件夹内获取现成的图片就可以,怎样实现我记得也不太清楚了,我就把所有的代码给上传了算了
using System.Data;
using System.Configuration;
using System.Collections;
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 System.Drawing.Drawing2D;
using System.Drawing.Text;
public partial class GetPhoto : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
if (Request.Form["width"]!=null)
{
CreateImage("/");
}
}
}
private bool CreateImage(string Path)
{
int w = 0;
int h = 0;
try
{
w = int.Parse(Request.Form["width"]);
h = int.Parse(Request.Form["height"]);
}
catch (Exception ee)
{
Response.Write(ee.Message);
return false;
}
Bitmap newmap = new Bitmap(w, h);
int rows = 0;
int cols = 0;
Graphics gp = Graphics.FromImage(newmap);
gp.Clear(Color.White);
ImageCodecInfo myImageCodecInfo;
System.Drawing.Imaging.Encoder myEncoder;
EncoderParameter myEncoderParameter;
EncoderParameters myEncoderParameters;
myImageCodecInfo = ImageCodecInfo.GetImageEncoders()[1];
myEncoder = System.Drawing.Imaging.Encoder.Quality;
myEncoderParameters = new EncoderParameters(1);
myEncoderParameter = new EncoderParameter(myEncoder, 95L);
myEncoderParameters.Param[0] = myEncoderParameter;
gp.CompositingQuality = CompositingQuality.HighQuality;
gp.SmoothingMode = SmoothingMode.HighQuality;
gp.InterpolationMode = InterpolationMode.HighQualityBicubic;
gp.TextRenderingHint = TextRenderingHint.ClearTypeGridFit;
for (rows = 0; rows < newmap.Height; rows++) //循环图片高度
{
string px = Request["PX" + rows];
string[] c_row = px.Split(',');
for (cols = 0; cols < newmap.Width; cols++) //循环图片宽度
{
string values = c_row[cols];
if (values != "" && values != null)
{
string hex = values;
while (hex.Length < 6)
{//防止颜色丢失
hex = "0" + hex;
}
int r = int.Parse(hex.Substring(0, 2), System.Globalization.NumberStyles.HexNumber);
int g = int.Parse(hex.Substring(2, 2), System.Globalization.NumberStyles.HexNumber);
int b = int.Parse(hex.Substring(4, 2), System.Globalization.NumberStyles.HexNumber);
newmap.SetPixel(cols, rows, Color.FromArgb(r, g, b));
}
}
}
gp.DrawImage(newmap, 0, 0, w, h);
Path = Server.MapPath("Photo/")+"tmpPhoto.jpg";
//保存路径,修改这里
newmap.Save(Path, myImageCodecInfo, myEncoderParameters);
myEncoderParameters.Dispose();
gp.Dispose();
newmap.Dispose();
string strPicUrl = "Photo/tmpPhoto.jpg";
Response.Redirect("CatchPhoto.aspx?imgUrl="+Server.UrlEncode(strPicUrl));
return true;
}
}
行了,睡觉
需要原码mail me Stavon@126.com