Zurück   Flashforum > Flash > ActionScript > ActionScript 3

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 18-02-2011, 10:56   #1 (permalink)
Neuer User
 
Registriert seit: Oct 2006
Beiträge: 31
Question Bilder laden

Hi,

ich will das der User in ein Air-Projekt ein Bild einladen kann...soweit kein Problem;

var laden:Loader = new Loader();
var url:URLRequest = new URLRequest("pic.jpg");
laden.x = 3;
laden.y = 3;
laden.load(url);
addChild(laden);

nun würde ich aber auch gerne die größe der ausgabe des Bildes festlegen...
laden.scaleX= 1.5;
funktioniert zwar, da ich aber nich weiss wie groß das eigeladene Bild ist, kann ich damit nicht arbeiten.
leider haut er mir das Bild immer weg wenn ich
laden.height = 132,5;
oder
laden.width = 110;
benutze...

Aber das ist noch nicht alles, am liebsten würde ich das Bild "im Hintergrund" in einem bestimmten Ordner in der von mir bestimmten Größe speichern, ohne das der User noch mal aktiv werden muss... ????

1000 Dank schon mal für euren INPUT!

Jan
Jankee ist offline   Mit Zitat antworten
Alt 18-02-2011, 11:36   #2 (permalink)
Flash-Designer
 
Benutzerbild von Martin Kraft
 
Registriert seit: May 2006
Ort: Wiesbaden
Beiträge: 6.162
Zitat:
Zitat von Jankee Beitrag anzeigen
leider haut er mir das Bild immer weg wenn ich
laden.height = 132,5;
oder
laden.width = 110;
benutze...
Man kann width und height nur sinnvoll anpassen, wenn sie zuvor nicht 0 sind. Mehr Informationen dazu findest Du hier.

Da das aber bei einem externen Bild erst der Fall ist, wenn es komplett geladen wurde, solltest Du einen entsprechenden EventListener auf Event.COMPLETE registrieren!

Zitat:
Zitat von Jankee Beitrag anzeigen
Aber das ist noch nicht alles, am liebsten würde ich das Bild "im Hintergrund" in einem bestimmten Ordner in der von mir bestimmten Größe speichern, ohne das der User noch mal aktiv werden muss... ????
Wenn Du ein Bild in einer anderen Größe speichern möchtest, reichen scaleX/scaleY oder width/height alleine nicht. Stattdessen musst Du die Daten des BitmapData selbst bearbeiten. Hierfür erstellt man ein neues Ziel-BitmapData in der gewünschten Endgröße und zeichnet dahinein das Ausgangsbild mit der Methode draw. Die Skalierung wird hierbei über eine entsprechende Transformationsmatrix angegeben!

Für den Prozess des Speicherns benötigst Du dann die Klassen ByteArray und File bzw. FileReference sowie den PNGEncoder oder JPGEncoder (aus der as3corelib)

Weitere Informationen über die erwähnten Methoden und Klassen findest Du in der AS3-Referenz oder über die Suchfunktion hier im Forum!
__________________
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 (18-02-2011 um 11:39 Uhr)
Martin Kraft ist offline   Mit Zitat antworten
Alt 18-02-2011, 15:07   #3 (permalink)
Neuer User
 
Registriert seit: Oct 2006
Beiträge: 31
super, also das mit dem veändern der größe hat geklappt:

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

function fertig(evt:Event)
{
laden.height = 100;
laden.width = 150;
}

DANKE!

..jetzt fehlt nur noch das "nachzeichnen" mit draw und automatische abspeichern..
mal schaun :-)

Jan
Jankee ist offline   Mit Zitat antworten
Alt 18-02-2011, 16:39   #4 (permalink)
Neuer User
 
Registriert seit: Oct 2006
Beiträge: 31
Question

...so jetzt hab ich auch das Nachzeichnen hinbekommen. Und die Nachzeichnung hab ich auf die gewünschte Größe bringen können:

import flash.display.Bitmap;
import flash.display.BitmapData;

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

var bildDaten:BitmapData;
var neuesBild:Bitmap;
function fertig(evt:Event)
{
if (laden.content != null)
{
neuesBild = Bitmap(laden.content);
neuesBild.height = 132,5;
neuesBild.width = 110;
bildDaten = neuesBild.bitmapData;

var meinebreite:Number = bildDaten.width;
var meinehoehe:Number = bildDaten.height;
var bitmapDataObject2:BitmapData = new BitmapData(meinebreite,meinehoehe,false,0x00FF0000 );
var rect:Rectangle = new Rectangle(0,0,meinebreite,meinehoehe);
var bytes:ByteArray = bildDaten.getPixels(rect);
bytes.position = 0;
bitmapDataObject2.draw(bildDaten);
var bitmapImage1:Bitmap = new Bitmap(bildDaten);
var bitmapImage2:Bitmap = new Bitmap(bitmapDataObject2);
addChild(bitmapImage2);
bitmapImage2.x = 50;
bitmapImage2.y = 50;
var sollscaleX = 110 / meinebreite;
var sollscaleY = 132.5 / meinehoehe;
bitmapImage2.scaleX = sollscaleX;
bitmapImage2.scaleY = sollscaleY;
}
}

...leider bin ich noch nicht weiter was das automatische Speichern in der neuen Größe angeht.

Nochmal jemand ein paar Tips...??

DANKESCHÖN!

Jan
Jankee ist offline   Mit Zitat antworten
Alt 18-02-2011, 16:48   #5 (permalink)
Flash-Designer
 
Benutzerbild von Martin Kraft
 
Registriert seit: May 2006
Ort: Wiesbaden
Beiträge: 6.162
cIh will Dich ja nicht entmutigen, aber ich habe ja oben schon beschrieben, dass scaleX und scaleY in diesem Fall nichts bringen - auch nicht, wenn Du vorher das BitmapData kopierst.

Letzteres geht übrigens auch wesentlich einfacher:
PHP-Code:
var newBmpData:BitmapData bmpData.clone(); 
Zitat:
Zitat von Martin Kraft Beitrag anzeigen
Wenn Du ein Bild in einer anderen Größe speichern möchtest, reichen scaleX/scaleY oder width/height alleine nicht. Stattdessen musst Du die Daten des BitmapData selbst bearbeiten. Hierfür erstellt man ein neues Ziel-BitmapData in der gewünschten Endgröße und zeichnet dahinein das Ausgangsbild mit der Methode draw. Die Skalierung wird hierbei über eine entsprechende Transformationsmatrix angegeben!

Für den Prozess des Speicherns benötigst Du dann die Klassen ByteArray und File bzw. FileReference sowie den PNGEncoder oder JPGEncoder (aus der as3corelib)

Weitere Informationen über die erwähnten Methoden und Klassen findest Du in der AS3-Referenz oder über die Suchfunktion hier im Forum!
Benutz wirklich mal die Suchfunktion! Es dürfte dutzende Beiträge zu den Themen "BitmapData skalieren AS3" und "BitmapData JPGEncoder" geben.
__________________
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 (18-02-2011 um 16:51 Uhr)
Martin Kraft 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
Bilder laden Dani Düsentrieb ActionScript 2 0 03-12-2010 09:58
MovieClips in MovieClip laden + Dynamisches Bilder laden maltem Flash CS3 Professional 2 03-07-2008 08:16
externe Bilder laden und mit Adminoberfläche Bilder Dazufügen bzw. löschen super0824 Flash Einsteiger 1 19-04-2006 00:03
Bilder laden Blinker Flash MX 3 10-09-2003 21:37
Bilder laden Crazy X Flash 4 und Flash 5 6 28-01-2002 15:26


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:15 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele