Zurück   Flashforum > Flash > ActionScript > ActionScript 3

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 20-02-2011, 14:15   #1 (permalink)
Neuer User
 
Registriert seit: Oct 2006
Beiträge: 31
fileStream.write für .jpg

Hi,

also ich arbeite nach wie vor an einer AIR-Geschichte.
Der User läd ein Bild in die Anwendung und ich möchte dieses Bild automatisch im Hintergrund in einem bestimmten Ordner abspeichern, weil ich später noch mal darauf zugreifen will.

Hab grad gelernt wie ich per FileStream eine datei im Hintergrund speichern kann:

import flash.filesystem.FileStream;
import flash.events.Event;
import flash.filesystem.File;
import flash.errors.IOError;

var fileStream:FileStream;
fileStream = new FileStream();
fileStream.addEventListener(Event.CLOSE, fileCloseHandler);
fileStream.addEventListener(IOErrorEvent.IO_ERROR, fileIOError);

var writeFile:File;
writeFile = File.documentsDirectory.resolvePath('AIR/test.txt');
fileStream.openAsync(writeFile, FileMode.WRITE);
fileStream.writeUTFBytes('Hallo Welt');
fileStream.close();

function fileIOError(event:IOErrorEvent):void
{
trace ("FEHLER");
}
function fileCloseHandler(event:Event):void
{
trace ("FERTIG");
}


Soweit so gut.
Die Beispiele die ich finde "generieren" immer .txt Dateinen, die in
fileStream.writeUTFBytes('Hallo Welt');
mit Inhalt gefüllt werden.
Nun hab ich 2 Probleme;
1) soweit ich es verstanden habe, muss ich für die Erstellung eines .jpg statt "writeUTFBytes" etwas anderes nehmen - denke "writeObject" wäre richtig, bin mir aber nicht sicher.
Kann das nicht testen, weil ich
2) nicht weiss wie ich mein geladenes Bild statt "Hallo Welt" als Inhalt der zu erzeugenden Datei "schreibe".

Hier mal mein bisheriger Code. Wenn ich mich nicht irre ist der rote Teil das Problem...

var laden:Loader = new Loader();
var url:URLRequest = new URLRequest("pic.jpg");
laden.load(url);
laden.contentLoaderInfo.addEventListener(Event.COM PLETE, fertig);
addChild(laden);

function fertig(evt:Event)
{
trace ("geladen");
}


import flash.filesystem.FileStream;
import flash.filesystem.File;
import flash.events.Event;
import flash.filesystem.File;
import flash.errors.IOError;

var diesspeichern:File = new File();

diesspeichern = laden.data;

var fileStream:FileStream;
fileStream = new FileStream();
fileStream.addEventListener(Event.CLOSE, fileCloseHandler);
fileStream.addEventListener(IOErrorEvent.IO_ERROR, fileIOError);

var writeFile:File;
writeFile = File.documentsDirectory.resolvePath('AIR/pic.jpg');
fileStream.openAsync(writeFile, FileMode.WRITE);

fileStream.writeObject(diesspeichern);
fileStream.close();

function fileIOError(event:IOErrorEvent):void
{
trace ("FEHLER");
}
function fileCloseHandler(event:Event):void
{
trace ("FERTIG");
}



Hoffe es kann mir jemand weiterhelfen :-) !!!
Jan
Jankee ist offline   Mit Zitat antworten
Alt 20-02-2011, 15:01   #2 (permalink)
Flash-Designer
 
Benutzerbild von Martin Kraft
 
Registriert seit: May 2006
Ort: Wiesbaden
Beiträge: 6.162
Hallo Jankee!

Vorab:
Das ist jetzt schon der 4 Thread, denn Du zu einem neuen aspekt desselben Problems eröffnest. Damit zwingst Du die Anderen immer wieder bei 0 anzufangen oder sich mühsam durch Deine Beitrags-Historie zu wühlen. Sinnvoller und produktiver wäre es, in einem einzelnen Thread ein Problem bis zur Lösung zu begleiten und so für alle die bisherigen Ansätze und Probleme offen zu legen.


Zum Problem:
Die File-Klasse kann keine Daten enthalten, weshalb Du auch nicht einfach den Inhalt Deines Loaders drin speichern kannst.

Ich verstehe nicht ganz, warum Du eine Datei lokal kopieren möchtest - nur um sie später nochmal verwenden zukönnen? Behalt sie doch einfach im Cache!
  • Wenn Du tatsächlich eine Datei 1:1 kopieren möchtest, verwende dafür die Funktion file.copyTo().

  • Möchtest Du sie hingegen bearbeiten, musst Du eh den "Umweg" über ein BitmapData gehen. Hierfür habe ich Dir mal eine Funktion zusammengetippt, mit der man die Daten als PNG oder JPG speichern kann:
    PHP-Code:
    import com.adobe.images.JPGEncoder;
    import com.adobe.images.PNGEncoder;
    import flash.display.BitmapData;
    import flash.filesystem.File;
    import flash.filesystem.FileMode;
    import flash.filesystem.FileStream;
    import flash.utils.ByteArray;

    function 
    saveBitmapDatabmpData:BitmapDatafileName:StringasJpg:String false):void {
        
        
    // Bild kodieren
        
    var byteArray:ByteArray asJpg? new JPGEncoder().encodebmpData ) : PNGEncoder.encodebmpData );
        
        
    //Bild speichern
        
    var stream:FileStream = new FileStream();
        
    stream.open( new FilefileNameFileMode.WRITE );            
        
    stream.writeBytesbyteArray0byteArray.length );
        
    stream.close();
        

__________________
Viele Grüße // Martin

Martin Kraft // Interaktionsdesign

Hilfreiche Websites:
// Hilfe zur Adobe Flash Plattform
// ActionScript 2 Referenz
// ActionScript 3 Referenz
// ActionScript 3 Arbeitshandbuch
// weitere Flash Ressourcen

Bitte keine Flashfragen per PM oder Profilnachricht! Dafür ist das Forum da!

Geändert von Martin Kraft (20-02-2011 um 15:57 Uhr)
Martin Kraft ist offline   Mit Zitat antworten
Alt 20-02-2011, 15:27   #3 (permalink)
Neuer User
 
Registriert seit: Oct 2006
Beiträge: 31
danke schon mal

Hi Martin.

erst mal danke... werd mich gleich mal dran setzen und versuchen deinen Input einzubauen.

Ich dachte es ist angenehmer wenn sich die Leute nicht durch meine "alten" Probleme durchwälzen müssen (die ja teilweise gelöst sind) um mir bei meinem derzeitigen Problem zu helfen - deshalb immer ein neuies Thema...

Das mit dem "im Cache" behalten geht nicht weil ich immer wieder - bei späteren Sessions auch auf die Bilder (aus dem bestimmten Ordner) zugreifen möchte.

Aber 1000 Dank für den neuen Input!

Gruss
Jan
Jankee ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
copyTo oder FileStream?! LeSmou Adobe AIR 0 02-09-2010 14:11
FileStream Event Complete geht nicht Sebbal Adobe AIR 0 15-03-2010 13:33
URLLoader wartet auf FileStream? ghost23 Adobe AIR 4 19-11-2008 13:19
FileStream / Netstream gigo Adobe AIR 2 12-02-2008 16:14
write ReNNeR Flash MX 1 20-05-2002 11:53


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:04 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele