Einzelnen Beitrag anzeigen
Alt 01-09-2010, 10:23   #1 (permalink)
SDCLeitung
Neuer User
 
Registriert seit: Oct 2008
Beiträge: 25
Bild mit Webcam machen und in voller Größe in Loader anzeigen

Hey,
ich würde gerne per Webcam Bilder erstellen und diese via PHP auf dem Server speichern. Das funktioniert bisher auch alles, allerdings tritt beim Bild erstellen ein Fehler:
Als Webcambild wird das Bild in voller größe angezeigt und beim Klick auf Bild machen (buttonPreview) wird das Bild gemacht und im Loader angezeigt aber im Loader ist das Bild dann nur noch ca. 1/4 des Webcambildes. Und der Rest des Bildes ist weiß (bzw. die Füllfarbe die eingestellt ist). Das wäre ja jetzt nicht umbedingt so schlimm zwar auch doof aber aktzeptabel. Wenn ich das Bild jetzt aber an eine PHP Datei weiterleite zum speichern wird das Bild dann aber eben (logischerweiße) so gespeichert wie es auch im Loader zu sehen ist. Woran kann das liegen das das Bild falsch gemacht wird und nicht in voller Größe?

Hier der Code:
Code:
import flash.net.NetStream;
import flash.events.NetStatusEvent;
import flash.utils.ByteArray;
import encoding.JPEGEncoder;
import flash.display.Loader;

var cam:Camera = Camera.getCamera();

// ::::: Video ::::::
if(cam != null){
var myVideo:Video = outputcam;
cam.setMode(350,300,30);
myVideo.attachCamera(cam);
}
var nc:NetConnection = new NetConnection();
nc.connect(null);

var ns:NetStream = new NetStream(nc);

var customClient:Object = new Object();
ns.client = customClient;

ns.addEventListener(NetStatusEvent.NET_STATUS, statusmeldungen);
 
function statusmeldungen(meldungen:Object)
{
	// Loop
	if (meldungen.info.code == "NetStream.Play.Stop") {
		ns.seek(0);
		ns.resume();
	}
};
 
// :::: Loader --> Anzeigen des JPEGs :::::

var vorschau:Loader = new Loader();
vorschau.x = 0;

// :::: JPG erstellen :::::

var myJPEGData:ByteArray;

function createJPEG ( evt:MouseEvent ):void 

{

	// neues Bitmap-Objekt
	var myBmd:BitmapData = new BitmapData (myVideo.width,myVideo.height);
	
	// Bitmap vom Video erstellen
	myBmd.draw (myVideo);
	
	// neues JPEP-Objekt (Angabe in Klasmmern ist die Qualitaet)
	var myEnc:JPEGEncoder = new JPEGEncoder(100);
	
	// neues ByteArray (binäre Daten)
	myJPEGData = myEnc.encode (myBmd);
	
	// loadBytes() lädt binäre Daten aus einem ByteArray
	vorschau.loadBytes (myJPEGData);
	
	// vorschau auf der Bühne platzieren
	addChild (vorschau);
	
	// Save-Button anzeigen
	buttonPreview.visible = false;
	buttonsave.visible = true;
	buttonnew.visible = true;

}

buttonPreview.addEventListener (MouseEvent.MOUSE_UP, createJPEG);
buttonsave.addEventListener (MouseEvent.MOUSE_UP, save);
buttonsave.visible = false;
buttonnew.addEventListener (MouseEvent.MOUSE_UP, newpic);
buttonnew.visible = false;


// neuer URLLoader zum Senden der Daten an den Server
var myURLLoader:URLLoader = new URLLoader();
myURLLoader.addEventListener ( Event.COMPLETE, onImageSent )

function newpic(evt:MouseEvent) {
	buttonsave.visible = false;
	buttonnew.visible = false;
	buttonPreview.visible = true;
	removeChild(vorschau);
}

function save(evt:MouseEvent) {
	
	// neue URL-Anfrage festlegen
 	var myRequest:URLRequest = new URLRequest ("Neues%20Avatar?action=upload"); 
	
	// Content-type (application/octet-stream) header festlegen und hinzufügen
 	var header:URLRequestHeader = new URLRequestHeader ("Content-type", "application/octet-stream");
	myRequest.requestHeaders.push (header);
 	
	// über POST versenden
 	myRequest.method = URLRequestMethod.POST;
 	
	// JPEG-Daten mit der URL-Anfrage verknüpfen
 	myRequest.data = myJPEGData;
	
	// URLLoader mit der URL-Anfrage verknüpfen und danach laden
	myURLLoader.load (myRequest); 
	navigateToURL (myRequest, "_self");
}
	

function onImageSent ( evt:Event ):void 

{
	var loader:URLLoader  = URLLoader (evt.target);
	var myVars:URLVariables = new URLVariables (loader.data);
	tf.text = "http://www.meinserver.de/" + myVars.result;

}
Vielen Dank für eure Hilfe
SDCLeitung ist offline   Mit Zitat antworten