Hej Flash Forum
Så er jeg som nybegynder oprettet som bruger her for at få lidt hjælp, og hjælpe andre når jeg kommer så langt
Jeg er igang med et projekt hvor jeg vha. webcam skal nappe et snapshot som jeg så kan gemme på serveren. Det har jeg alt sammen fået til at virke ved hjælp af noget kode som der var en flink mand der havde postet til fri brug på hans blog (http://blog.vamapaull.com/). Men!
Selv om jeg har lykkedes at få webcam'et op i den korrekte størrelse ved at tilføje et video element som jeg har defineret den ønskede størrelse på. Så kan jeg ikke få den til at gemme mit jpg. billede i korrekt format...Og jeg kan simpelthen ikke lure hvad der er galt i koden.. Resultatet jeg får er et billede 640*480 men kun de øverste 162*128 pixel indeholder billeder, og resten er bare hvidt..(prøver at vedlægge billedet herunder)
Så mit spørgsmål er egentlig bare hvordan kan jeg ændre størrelsen på dette, da indsætning af 640,480 godt nok gav større billede fil, men det bliver ikke fyldt ud med web cam indholdet.
var bitmapData:BitmapData = new BitmapData(640,480);
var bitmap:Bitmap = new Bitmap(bitmapData);
bitmap.x = 20;
bitmap.y = 450;
addChild(bitmap);
Jeg indsætte lige hele koden herunder, så er der måske også andre der kan bruge det ![]()
stage.align = StageAlign.TOP_LEFT;
stage.scaleMode = StageScaleMode.NO_SCALE;
//right click credits menu
var rightClickMenu:ContextMenu = new ContextMenu();
rightClickMenu.hideBuiltInItems();
this.contextMenu = rightClickMenu;
import flash.display.Bitmap;
import flash.display.BitmapData;
import com.adobe.images.JPGEncoder;
var bandwidth:int = 0; // Maximum amount of bandwidth that the current outgoing video feed can use, in bytes per second.
var quality:int = 100; // This value is 0-100 with 1 being the lowest quality.
var cam:Camera = Camera.getCamera();
cam.setQuality(bandwidth, quality);
cam.setMode(640,480,30); // setMode(videoWidth, videoHeight, video fps, favor area)
video.attachCamera(cam);
var bitmapData:BitmapData = new BitmapData(640,480);
var bitmap:Bitmap = new Bitmap(bitmapData);
bitmap.x = 20;
bitmap.y = 450;
addChild(bitmap);
capture_mc.buttonMode = true;
capture_mc.addEventListener(MouseEvent.CLICK,captureImage);
function captureImage(e:MouseEvent):void {
bitmapData.draw(video);
save_mc.buttonMode = true;
save_mc.addEventListener(MouseEvent.CLICK, onSaveJPG);
save_mc.alpha = 1;
}
save_mc.alpha = .5;
function onSaveJPG(e:Event):void{
var myEncoder:JPGEncoder = new JPGEncoder(100);
var byteArray:ByteArray = myEncoder.encode(bitmapData);
var header:URLRequestHeader = new URLRequestHeader("Content-type", "application/octet-stream");
var saveJPG:URLRequest = new URLRequest("save.php");
saveJPG.requestHeaders.push(header);
saveJPG.method = URLRequestMethod.POST;
saveJPG.data = byteArray;
var urlLoader:URLLoader = new URLLoader();
urlLoader.addEventListener(Event.COMPLETE, sendComplete);
urlLoader.load(saveJPG);
function sendComplete(event:Event):void{
trace("captured");
}
}
Lykkedes ikke lige at indsætte billede, kan sende det på mail hvis det er ![]()
Håber der er nogen der har en løsning, jeg er rigtig begynder inden for AS3 så en pædagogisk forklaring er at foretrække ![]()
Med Venlig Hilsen
Mads
1 kommentar
Ser den frame du fanger i bitmapData rigtig ud?
Du kan også teste om din jpg er encodet rigtigt, før du sender byteArray til serveren på denne måde:
...
Hvis den ser rigtig ud, må det være server-side relateret.
Hvis du bruger et php script, kan du i testfasen starte med at skrive følgende øverst i din php fil:
error_reporting(E_ALL);Husk at fjerne 'error_reporting()' igen, når alt virker.