| |||||||
Du magst keine Werbung? Wir auch nicht!
Einfach registrieren und die Werbung ist weg. Diese Nachricht sehen nur nicht registrierte Nutzer.
![]() |
| | LinkBack | Themen-Optionen | Ansicht |
| | #1 (permalink) |
| Neuer User Registriert seit: Aug 2003
Beiträge: 24
| Alpha aus BitmapData entfernen
Hi, hat jemand ne Idee wie ich einem BitmapData Objekt die Pixel entnehme, die den Alphawert 0 haben? Habs mit Kopieren und Filtern probiert, aber irgendwie klappt das nicht. Das fertige BitmapData Objekt soll dann in einem MovieClip als Maske dienen. Leider werden die transparenten Pixel bisher immer zur Maske dazugerechnet, deswegen müssen die raus ![]() Danke vorab ! |
| | |
| | #3 (permalink) |
| Neuer User Registriert seit: Aug 2003
Beiträge: 24
|
Stimmt, Doku lesen hilft. Wobei eine Iteration über alle Pixel doch recht Ressourcenlastig ist, oder? Gibts nicht auch ne Möglichkeit, die etwas schneller läuft? Mein BitmapData hat eh nur schwarze Flächen. Irgendein Kopierfilter, der alle schwarzen Pixel kopiert und den Rest weg lässt, wäre mein Gedanke. |
| | |
| | #4 (permalink) |
| nerdig working Registriert seit: Jul 2001 Ort: Hamburg
Beiträge: 5.832
|
bitmapdata.threshold
__________________ beat it | shake it | fish it | just pudding | love-o-meter flashforum sidebar installieren |
| | |
| | #5 (permalink) |
| Neuer User Registriert seit: Sep 2004 Ort: Spain/Ibiza
Beiträge: 942
|
bin mir uber die problem stelung nicht ganz im klaren aber versuchs mall damit : http://www.actionscript.org/forums/s...ghlight=screen
__________________ Languages : (in the order of knowledge/preference) Read: Flash AS, PHP, JS, Html, DHtml, Basic, C++, DOS, 3DMaxScript, English, Deutsch, Magyar, XML, Pascal, VB, Spanish Write: Flash AS, Basic, PHP, JS, DHtml, Html, ..., C++, ...., ..., English, ..., ..., ..., ...., Deutsch, ..., Magyar wen du mein deutsch nicht magst whele eine andere sparache von den obrigen ;) |
| | |
| | #6 (permalink) |
| Neuer User Registriert seit: Aug 2003
Beiträge: 24
|
Danke für das Beispiel Xeef, das kommt meiner Idee auch schon recht nah. Das über die threshold Funktion zu lösen habe ich auch schon probiert. Code: var mask:BitmapData = new BitmapData(meinSWBitmap.width,meinSWBitmap.height,true,0); mask.threshold(meinSWBitmap, new Rectangle(0,0, meinSWBitmap.width,meinSWBitmap.height), new Point(0,0), '==', 0xFF000000,0xFF000000); Code: mymask_mc.attachBitmap(mask,1); myimage_mc.setMask(mymask_mc); Geändert von Fraenky (25-08-2006 um 13:41 Uhr) |
| | |
| | #7 (permalink) |
| Neuer User Registriert seit: Sep 2004 Ort: Spain/Ibiza
Beiträge: 942
|
ich hab auch rumprobiert und bin zum schluss gekomen das du es mit MC nicht machen kanst heist welche alpha werte im bitmap drinstehen scheint eine maske nicht zu juken wirst mit bitmaps arbeiten mussen ohne die benutzung von _mc.setMask()
__________________ Languages : (in the order of knowledge/preference) Read: Flash AS, PHP, JS, Html, DHtml, Basic, C++, DOS, 3DMaxScript, English, Deutsch, Magyar, XML, Pascal, VB, Spanish Write: Flash AS, Basic, PHP, JS, DHtml, Html, ..., C++, ...., ..., English, ..., ..., ..., ...., Deutsch, ..., Magyar wen du mein deutsch nicht magst whele eine andere sparache von den obrigen ;) |
| | |
| | #8 (permalink) |
| Knopfmaler Registriert seit: Nov 2004 Ort: Essen
Beiträge: 227
|
Mahlzeit zusammen, bin mir nicht ganz sicher ob Dir das hilft, aber man kann ja mit bitmapInstance.copyChannel(sourceBitmap:BitmapData , sourceRect:Rectangle, destPoint:Point, sourceChannel:Number, destChannel:Number) : Void prima zwischen den einzelnen ARGB-Kanälen hin- und her kopieren. Wenn du z.B. also keinen Alpha willst, dann kopier einfach ein Rechteck (voller 0xFF) aus einem anderen Bitmap direkt in den Alpha deines Zielbitmaps rein. Viele Gruesse =:] Aerks |
| | |
| | #9 (permalink) |
| Neuer User Registriert seit: Aug 2003
Beiträge: 24
|
So habs nun etwas anders gelöst und will euch das nicht vorenthalten. Anstatt eine Maske zu verwenden habe ich meinen MovieClip in ein BitmapData Objekt gezeichnet und meine Maske (BitmapData Objekt mit schwarzen Flächen) darauf angewendet. Code: myImageBitmap.threshold(maskBitmap, new Rectangle(0,0, maskBitmap.width,maskBitmap.height), new Point(0,0), '<', 0xff000000,0x00); ![]() Danke für Eure Ideen. Grüße Fraenky |
| | |
| | #10 (permalink) |
| Neuer User Registriert seit: Dec 2002
Beiträge: 14
|
Ich habe gerade ein ähnliches Problem, an dem ich seit 3 Tagen sitze, ohne wirklich voranzukommen. Ich habe 2 Bilder jeweils in einem mc. Diese mcs liegen übereinander. Was ich versucht habe, ist, dass man in dem oberen Bild "herumradieren" kann bzw. das Bild auch wieder "zurückmalen" kann. Letzteres ist wohl der schwierigere Part. Mein Ansatz war ein mc mit einem BitmapData Objekt, den ich als Maske auf das obere Bild angewandt habe. Das hat wegen der Alphawert 0 Geschichte nicht funktioniert, d.h. die Maske wurde immer auf die gesamte Bitmapgröße angewandt egal was ich drinnen "gelöscht" habe. Ich habe es auch mal ganz simpel mit blendMode (maske -> erase, unteres bild -> layer) versucht, funktiontiert aber scheinbar auch nicht mit Bildern. threshold() ist mir immer noch ein mittelgroßes Rätsel, aber soweit ich Fraenky folgen konnte, wäre die "Maskierung" seiner Problemlösung wohl nicht rückgängig machbar? Oder habe ich da was falsch verstanden? |
| | |
| | #11 (permalink) |
| Neuer User Registriert seit: Dec 2002
Beiträge: 14
|
Nach stundenlangem Suchen doch noch eine Lösung gefunden Mit threshold kam ich zu keinem befriedigenden Ergebnis, mit copyChannel auch nicht, dafür mit copyPixels. PHP-Code: Damit wird sogar der weiche Rand des Malwerkzeugs berücksichtigt und keine die Sache läuft sauber Ich bin begeistert! (Mit copyChannel hätte es eigentlich einfacher gehen müssen, aus irgendwelchen Gründen hats aber gar nicht gefunzt.) |
| | |
![]() |
| Lesezeichen |
| Themen-Optionen | |
| Ansicht | |
| |