[讨论]asp.net(C#)+Flash在线拍照功能

eqh 2007-09-07 09:35:04
想实现asp.net(C#)+Flash在线拍照功能,搜了一大圈,只找到了jsp版的,代码如下:



主要用到Camera类,MovieClip 类,BitmapData类,LoadVars类,如果要实现这个功能,必须先去了解这几个类

实现的过程如下。

1,先在库中新建一个视频元件,把视频元件拖放到场景中,取名为my_video,新建一个按纽元件,取名为btn_print.

2,加入以下代码实现视频的播放
myCam = Camera.get();
myCam.setMode(266,200,10);
my_video.attachVideo(myCam);

3 ,以下代码实现图片的获得和上传
import flash.display.BitmapData;
import flash.geom.Rectangle;
import flash.geom.ColorTransform;

class PrintScreen {

public var addListener:Function
public var broadcastMessage:Function

private var id: Number;
public var record:LoadVars;

function PrintScreen(){
AsBroadcaster.initialize( this );
}
public function print(mc:MovieClip, w:Number, h:Number){
broadcastMessage("onStart", mc);
w = Math.floor(w);
h = Math.floor(h);
var bmp:BitmapData = new BitmapData(w, h, false);
record = new LoadVars();
record.width = w
record.height = h
record.cols = 0
record.rows = 0
bmp.draw(mc);
id = setInterval(copysource, 1, this, mc, bmp);
}

private function copysource(scope, movie, bit){
var pixel:Number
var str_pixel:String
scope.record["px" + scope.record.rows] = new Array();
for(var a = 0; a < bit.width; a++){
pixel = bit.getPixel(a, scope.record.rows )
str_pixel = pixel.toString(16)
scope.record["px" + scope.record.rows].push(str_pixel)
}

scope.record.rows += 1
if(scope.record.rows >= bit.height){
clearInterval(scope.id)
bit.dispose();
}
}
}

4 以下代码在服务器段接受数据,生成图片(jsp版)
String width = request.getParameter("width");
String height = request.getParameter("height");
int w = Integer.parseInt(width);
int h = Integer.parseInt(height);
try {
OutputStream fos = response.getOutputStream();
BufferedImage bf = new BufferedImage(w, h,
BufferedImage.TYPE_INT_RGB);

for (int i = 0; i < bf.getHeight(); i++) {
String data = request.getParameter("px" + i);
String[] ds = data.split(",");
for (int j = 0; j < bf.getWidth(); j++) {
int d = Integer.parseInt(ds[j], 16);
bf.setRGB(j, i, d);
}
}

ImageWriter writer = null;
ImageTypeSpecifier type = ImageTypeSpecifier
.createFromRenderedImage(bf);
Iterator iter = ImageIO.getImageWriters(type, "jpg");
if (iter.hasNext()) {
writer = (ImageWriter) iter.next();
}
if (writer == null) {
return null;
}
IIOImage iioImage = new IIOImage(bf, null, null);
ImageWriteParam param = writer.getDefaultWriteParam();

param.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);

param.setCompressionQuality(0.2f);

// save to file
ImageOutputStream outputStream2 = ImageIO
.createImageOutputStream(response.getOutputStream());
writer.setOutput(outputStream2);
writer.write(null, iioImage, param);

fos.close();

} catch (Exception e) {
e.printStackTrace();
}
System.out.println("w = " + w + ",h=" + h);
response.setContentType("image/jpeg");
return null;


本人不懂jsp,求C#版的,谢谢.

...全文
1138 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
zkpplpp 2010-04-18
  • 打赏
  • 举报
回复
我也在找 谁会的话帮下
DNN-2017 2008-07-27
  • 打赏
  • 举报
回复
不知道你解决了没,如过解决了希望跟我联系,,谢谢!
DNN-2017 2008-07-27
  • 打赏
  • 举报
回复
我也在找这个东东!!
mextb1860 2007-09-08
  • 打赏
  • 举报
回复
这个我也没做过。不过也想知道。 高手解答
dkiw900 2007-09-08
  • 打赏
  • 举报
回复
晕~~,如果翻译,是德语,还是法语,我只会中国话。
eqh 2007-09-08
  • 打赏
  • 举报
回复
自己顶上
zhanjinping 2007-09-07
  • 打赏
  • 举报
回复
xxoo2007 2007-09-07
  • 打赏
  • 举报
回复
mark
octverve 2007-09-07
  • 打赏
  • 举报
回复
原理是一样的,Flash拍照后,把二进制数据传给后台(JS,ASp.net都可以)。再由ASp.net读取数据流,还原成图片。一点也不难。自己作吧。一般,是不会给你成品的代码的。翻译更是没有必要。

62,243

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧