Toon posts:

[actionscript] maak een kleur van een jpeg transparant

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hallo,

Ik ben bezig met actionscript, hierin wil ik een jpeg-plaatje dat ik met MovieClip:oadMovie heb opgehaald voor een bepaalde kleur transparant maken.
Ik weet dat het makkelijk zou zijn om hier een gif voor te gebruiken, helaas is dit niet mogelijk is omdat het gerenderde plaatje uit een ander systeem komt.

Het instellen van de achtergrondkleur van de html is ook geen optie, omdat er *onder* deze MovieClip nog een(of meerdere) MovieClip's staan.

[1] Moet ik hiervoor de BitmapData class gebruiken, over alle pixels itereren en een gedefinieerde kleur transparant maken (alfa = 0%)

[2] Zijn er andere manieren / bibliotheken die ik hiervoor kan gebruiken?

Verwijderd

een JPEG kan voor zover ik weet geen transparantie aan..

PNG en GIF kunnen het wel

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 22-02 00:22

Janoz

Moderator Devschuur®

!litemod

Een JPEG heeft geen exacte kleuren. Na de compressie is het vaak zo dat een egaal vlak bestaat uit allemaal bijna dezelfde kleuren. Het vervangen van 1 kleur gaat dus niet werken.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Verwijderd

Topicstarter
Janoz schreef op woensdag 26 april 2006 @ 16:03:
Een JPEG heeft geen exacte kleuren. Na de compressie is het vaak zo dat een egaal vlak bestaat uit allemaal bijna dezelfde kleuren. Het vervangen van 1 kleur gaat dus niet werken.
Het plaatje wat ik terug krijg kan ook een png / gif zijn,.. alleen omdat het uit een ander systeem krijg kan ik het niet transparant krijgen. Omdat het in jpeg formaat het mooist eruit zag, dacht ik dat ik deze het beste kon gebruiken.

  • Royal
  • Registratie: Augustus 2002
  • Niet online

Royal

Flush

PNG-24 zal er nog beter uit zien dan JPEG, PNG heeft ook alpha transparantie. Probeer dat eens!

There is no dark side of the Moon really... as a matter of fact it's all dark


Verwijderd

Topicstarter
Royal schreef op woensdag 26 april 2006 @ 16:24:
PNG-24 zal er nog beter uit zien dan JPEG, PNG heeft ook alpha transparantie. Probeer dat eens!
Ik kan geen transparantie op de server generen, hierom is het dus noodzakelijk dat ik een kleur op de client ga vervangen.
Mogelijkerwijs zou ik een php pagina ertussen kunnen stoppen, en hierin de image converteren naar een transparante-png24, maar ik dacht dat ik dit ook wel in flash kon doen

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 22-02 00:22

Janoz

Moderator Devschuur®

!litemod

Verwijderd schreef op woensdag 26 april 2006 @ 16:08:
[...]


Het plaatje wat ik terug krijg kan ook een png / gif zijn,.. alleen omdat het uit een ander systeem krijg kan ik het niet transparant krijgen. Omdat het in jpeg formaat het mooist eruit zag, dacht ik dat ik deze het beste kon gebruiken.
Grappig, jpeg is van de drie die je noemt namelijk degene die wel informatie verliest terwijl de andere twee hier geen last van hebben.

Met gif moet je trouwens even opletten. Ik heb zelf een keer met een project meegedaan waarbij we extern een gif moesten importeren in flash, maar dit bleek niet te werken. Flash kon alleen jpeg en png aan. Het zou kunnen zijn dat dit nu niet meer zo is.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • Royal
  • Registratie: Augustus 2002
  • Niet online

Royal

Flush

Flash doet sowieso lastig met het inladen van externe bestanden. Is het noodzakelijk om Flash te gebruiken? Kun je anders niet beter voor Director gaan, daarmee kan het volgens mij een stuk makkelijker?

There is no dark side of the Moon really... as a matter of fact it's all dark


  • Matias
  • Registratie: Augustus 2004
  • Niet online
Royal schreef op woensdag 26 april 2006 @ 16:40:
Flash doet sowieso lastig met het inladen van externe bestanden. Is het noodzakelijk om Flash te gebruiken? Kun je anders niet beter voor Director gaan, daarmee kan het volgens mij een stuk makkelijker?
Flash is helemaal niet lastig met het inladen van externe bestanden. Als je de documentatie er op naleest wordt alles vanzelf wel duidelijk.. Overgens kan je geen bepaald gebied van een JPG afbeelding "maskeren" of "transparant maken". Hiervoor zou je een algoritme moeten schrijven dat de JPG "break apart", daarna een specifieke kleur per pixel opzoekt, en die delete. Ik denk dat je toch echt naar een andere oplossing moet gaan kijken.

Verwijderd

Topicstarter
matiasjansen schreef op woensdag 26 april 2006 @ 16:43:
[...]
"maskeren" of "transparant maken". Hiervoor zou je een algoritme moeten schrijven dat de JPG "break apart", daarna een specifieke kleur per pixel opzoekt, en die delete. Ik denk dat je toch echt naar een andere oplossing moet gaan kijken.
Inderdaad, dit wou ik met de BitmapData class doen, alleen vond ik dit vrij omslachtig.

Omdat ik het gevoel had dat dut niet op het "goede pad" is, wou ik weten of mensen een makkelijkere manier weten :D

ps: delete is betreffende alfa kanaal van de pixel op 0 zetten?

  • sanderb
  • Registratie: November 2000
  • Laatst online: 01:12
Ondanks alle mensen hierboven die beweren dat het niet makkelijk kan...
Het kan wel degelijk.

Ik begrijp dat je serverside geen transparantie kan generen, maar dus 1 kleur hebt die je wil verwijderen.

Zoek in de documentatie eens op "threshold".

Je kan van een bitmap elke pixel die aan bepaalde voorwaarde voldoet veranderen naar een andere waarde. Hiermee kun je dus ook bijvoorbeeld elke witte pixel transparant maken.
Je hoeft hiervoor niet door je hele bitmap te lopen in een iteratie. Het werkt dus snel.
Tests pixel values in an image against a specified threshold and sets pixels that pass the test to new color values. Using the threshold() method, you can isolate and replace color ranges in an image and perform other logical operations on image pixels.
wel flash 8 of hoger, maar aangezien je het al over bitmapdata had ga ik er vanuit dat dat geen probleem is.

" A common mistake that people make when trying to design something completely foolproof is to underestimate the ingenuity of complete fools. " - Douglas Noel Adams


Verwijderd

Topicstarter
sanderb schreef op woensdag 26 april 2006 @ 18:50:
...
Je kan van een bitmap elke pixel die aan bepaalde voorwaarde voldoet veranderen naar een andere waarde. Hiermee kun je dus ook bijvoorbeeld elke witte pixel transparant maken.
Je hoeft hiervoor niet door je hele bitmap te lopen in een iteratie. Het werkt dus snel.
...
Ideaal! dit zocht ik, het leek me al duf dat ik het allemaal zelf moest itereren :D

Het enigste wat mij nu nog niet geheel duidelijk is, hoe kan ik nu de html kleur #FF00FF transparant maken? Ik heb het volgende geprobeerd, maar het wil nog niet echt lukken :(

code:
1
2
3
4
var threshold:uint = 0xCCCCCCCC; //welke waarde?
var color:uint = 0xFF000000;//welke waarde?
var mask:uint = 0x00FF00FF;//welke waarde?
bitmapData.threshold(bitmapData, bitmapData.rectangle, new Point(), ">=", threshold, color, mask, false);


Kan iemand me vertellen welke waardes ik hier *ongeveer* moet gebruiken?
Pagina: 1