Flash 8 摄像头拍照

  前几天帮朋友做一个东西用到的 code 。
因为很久不做 Flash coding 了。所以也就很少关心 Flash 8 的新的 Calss。但听大家说过有这个功能。本想从网上找段教程或 code 来做。可是发现国内还没有类似的。就只能自己动手丰衣足食了。
开始做法:
第一步:在库中建立一个视频元件,类型选择:视频(受 ActionScript 控制)。
第二步:将视频元件拖到场景中,并调整尺寸到想要的大小。并起名为“my_video”
第三步:在时间轴中粘入下边的 code。
var my_video:Video;
my_video._x=100;
my_video._y=40;
var my_cam:Camera = Camera.get();
my_cam.setMode(180, 140, 10, true);
my_video.attachVideo(my_cam);

shutter.onRelease = function() {
    myBitmap = new flash.display.BitmapData(180, 240, true, 0);
    myBitmap.draw(my_video);
    var tempObj = _root.createEmptyMovieClip("photo", 100);
    tempObj._x = 300;
    tempObj._y = 40;
    tempObj.attachBitmap(myBitmap, 1, "always", true);
};Testing 发现有问题,拍出来照片只有 160x120 的区域有图像。并且图像变形了。 :eek:
什么地方出了问题呢?@#$%^&* (此处省略2小时 debug 时间……)
最后发现 my_video 复制到场景中调整大小时并不是改变 my_video.width 及 my_video.height 属性,而是改变 my_video._width 及 my_video._height 属性。原有视频元件的尺寸只有 160x120 。这就相当于将 my_video 作了形变。而 BitmapData.draw() 是不会考虑源元件的形变的。用官方的说法是:
引用: 源 MovieClip 对象不对此调用使用其任何舞台中转换。该源 MovieClip 对象会被视为存在于库或文件中,没有矩阵转换、没有颜色转换,也没有混合模式。如果您希望通过使用影片剪辑自身的 transform 属性来绘制影片剪辑,则可以使用它的 Transform 对象来传递各种 transformation 属性。
我开始没注意他给出的解决办法。我想既然 draw() 不考虑源元件的形变,那只能自己在输出的照片元件上想办法做形变了。于是有了这段 code。
var my_video:Video;
my_video._x=100;
my_video._y=40;
var my_cam:Camera = Camera.get();
my_cam.setMode(180, 140, 10, true);
my_video.attachVideo(my_cam);

shutter.onRelease = function() {
    myBitmap = new flash.display.BitmapData(160, 120, true, 0);
    myBitmap.draw(my_video);
    var tempObj = _root.createEmptyMovieClip("photo", 100);
    tempObj._x = 300;
    tempObj._y = 40;
    tempObj._width= 180;
    tempObj._height = 240;
    tempObj.attachBitmap(myBitmap, 1, "always", true);
};这下照片是想要的大小了,而且图像也没有了变形。但发现图像没有摄像头显示的清晰。
想了一下,那是当然,draw() 不考虑源元件的形变,draw时my_video 被当作 160x120 来draw了。 :mad:
那能不能通过改变 my_video.width 及 my_video.height 属性来改变 my_video 的尺寸而不是将 my_video 作形变呢?不能!!!my_video.width 及 my_video.height 属性是只读属性。
解决方法:
第一步:用视频编辑软件制作一个 180x240 尺寸的1贞的白色 mov 视频文件。
第二步:用 Macromedia Flash 8 Video Encoder 将mov视频文件转为 flv 视频文件。
第三步:在库中建立一个视频元件,类型选择:嵌入(与时间轴同步)。
第四步:将视频元件拖到场景中,并起名为“my_video”
    Testing 发现 my_video.width 及 my_video.height 属性为 180x120 。阿哈 :cool:
第五步:在时间轴中粘入下边的 code 。
var my_video:Video;
my_video.clear()
my_video._x=100;
my_video._y=40;
var my_cam:Camera = Camera.get();
my_cam.setMode(180, 140, 10, true);
my_video.attachVideo(my_cam);

shutter.onRelease = function() {
    myBitmap = new flash.display.BitmapData(160, 120, true, 0);
    myBitmap.draw(my_video);
    var tempObj = _root.createEmptyMovieClip("photo", 100);
    tempObj._x = 300;
    tempObj._y = 40;
    tempObj._width= 180;
    tempObj._height = 240;
    tempObj.attachBitmap(myBitmap, 1, "always", true);
};好了,现在所有问题都解决了。 ;)

时间: 2024-11-03 05:54:29

Flash 8 摄像头拍照的相关文章

利用html5调用本地摄像头拍照上传图片

原文:利用html5调用本地摄像头拍照上传图片 xmlns="http://www.w3.org/1999/xhtml">    html5概念啥的就不废话了,不知道的 百度, 谷歌一堆..今天学了学html5中的Canvas结合新增的<video>标签来获取本地摄像头,在html5之前,要在浏览器获取本地摄像头只有通过插件(ActiveX,但是这种只有IE支持)或者是flash来获取(或许你没学过flash那就很坑爹了),在之后微软的silvertlight中也可以

Java中利用JMF编写摄像头拍照程序

程序 首先到SUN下载最新的JMF,然后安装.http://java.sun.com/products/java-media/jmf/index.jsp 然后,说一下需求 1. 用摄像头拍照 2. 在文本框输入文件名 3. 按下拍照按钮,获取摄像头内的图像 4. 在拍下的照片上有一红框截取固定大小的照片. 5. 保存为本地图像为jpg格式,不得压缩画质 技术关键,相信也是大家最感兴趣的部分也就是如何让一个摄像头工作,并拍下一张照片了. 利用JMF,代码很简单: //利用这三个类分别获取摄像头驱动

win7电脑怎么用摄像头拍照?

  win7电脑怎么用摄像头拍照?: 1.打开开始菜单,右键"计算机"选择"管理"; 2.在"计算机管理"窗口左边一栏,双击"设备管理器".然后,从右边栏中找到"图像设备",点开.在摄像头设备上右键鼠标,选择"属性"; 3.在"驱动程序"选项卡上,单击"驱动程序详细信息",可以看到.exe 文件的详细路径(通常位于系统盘 Windows 文件夹下)

笔记本Win7系统用自带摄像头拍照的小技巧

  笔记本Win7系统用自带摄像头拍照的小技巧         具体方法如下: 1.本例中的Think安装了通信程序可快捷打开摄像头,"Fn+F6"打开摄像头; 2.点击右侧快照下的"抓拍快照"按钮,弹出如图窗口,确认是否满意; 3.如果满意,点击右下角"保存照片"按钮,选择保存路径,保存即可; 4.若不满意,点击左下角"重新抓拍快照"按钮,重新抓拍,可自定义照片大小,这样就可以拍照了. 上述教程内容就是关于笔记本Win7系统

js打开摄像头拍照保存,摄像头镜像。摄像头可以识别二维码功能

问题描述 js打开摄像头拍照保存,摄像头镜像.摄像头可以识别二维码功能 js打开摄像头拍照保存.摄像头镜像.摄像头可以识别二维码功能.求大神回答~ 解决方案 这个需要和安卓或者ios开发人员合作,安卓或者ios给实现二维码扫描功能,和js交互,提供给你js方法.供你调用,你就可以识别二维码了. 解决方案二: 可以先不考虑二维码扫描

AngularJS中使用HTML5摄像头拍照

1. 项目背景 公司开发一个网站,在做用户头像修改的时候领导提到增加一个由摄像头拍照实现修改头像的功能.因为我们网站是基于Html5进行开发,所以就直接采用H5来实现拍照.起初觉得这个功能很简单,但是做的时候才发现并不是那么简单的. 这是在AngularJs中成功实现调用摄像头拍照并截图上传的例图: 2. 如何调用摄像头 $scope.photoErr = false;  $scope.photoBtnDiable = true;  var mediaStream = null,track = 

视频-android模拟器可以连接PC的USB摄像头拍照不?

问题描述 android模拟器可以连接PC的USB摄像头拍照不? 各位高手们: 最近在研究摄像头拍照和视频这块,想通过模拟器调试本地PC的驱动摄像头拍照和视频,连接的是PC的是USB摄像头,不知道可现实不? 那位有弄过的可以分享一些经验 谢谢! 解决方案 模拟器好像不行,但是真实的手机是可以的,你可以在网上搜一下如何来做,网上有详解的: 如果回答对您有帮助,请采纳 解决方案二: 不行,这恰好是模拟器不支持的一个方面. 解决方案三: android的模拟器还没有这么强大.genymotion这个模

C# 使用摄像头拍照 支持Win7 64位

原文:C# 使用摄像头拍照 支持Win7 64位 So, how do we capture an image from a WebCam? Once you download the source code that is attached to the article you should have the following three projects: Demo – simple Windows Forms project that demonstrates how a WebCam

vb.net-VB.NET调用摄像头拍照只能拍一次,再拍就会出现捕获源,选择视频设备,点确定后没有用

问题描述 VB.NET调用摄像头拍照只能拍一次,再拍就会出现捕获源,选择视频设备,点确定后没有用 VB.NET调用摄像头拍照只能拍一次,再拍就会出现捕获源,选择视频设备,点确定后没有用,依然是黑屏,但是将笔记本重启后再打开就可以拍一次,然后又不行,还要重启后才能拍. 这个代码只能在2008里打开,如果谁能给编一个2010的调用摄像头拍照的更好,不要糊弄,csdn里的我们都下载尝试了,没一个好的,谢谢,以下是代码,感觉需要在stop那里做文章,求大神帮忙,重赏. Public Class Form