Die Arbeit ist nun in vollem Gange und folgende Feature werden unterstützt:
Im Anhang gibts ein Screenshot
Würde mich nach wie vor freuen, wenn sich interessen melden würden, gibt ja noch eine Menge Todo's:
[SIZE]UPDATE:[/SIZE]
Damit das hier nicht so ausartet, werde ich nur noch sporadisch über die Bibliothek berichten, aktuelle Informationen gibts auf meinem neuen Blog (inkl. neuer Silverlight Demo):
[URL]http://gpstudio.de/blog/[/URL]
Ich würde mich freuen, wenn der eine oder andere dort und bei codeplex vorbeischauen würde...
[SIZE]UPDATE2:[/SIZE]
Es gibt wieder Neugikeiten. Mittlerweile werden nun auch JPGs und GIF sowie animierte Bilder (im Moment aus GIFs) unterstützt. In meinem Blog gibt es einige Demos dazu. Ich freue mich immer noch über jegliches Interesse und evtl. Helfern.
Ursprünglicher Post:
Hallo miteinander,
ein großes Versäumnis von Microsoft finde ich den fehlenden guten Support für Images in Silverlight. Nichtmal ein einfaches Upload Tool mit Bildbearbeitung ist möglich. Sowas existiert für Flash und Java in Massen. Leider gibt es einfach keine gute Image Library in .NET, mit der man sowas implementieren könnte, wieso auch, .NET Framework bietet mit System.Drawing ja sonst volle Unterstützung für die wichtigsten Sachen.
Kompression wäre auch schön, zumindest in Form einer Integration einer bestehenden Lib, z.B. SharpZipLib (oder wie die heißt).
Ich würde dieses Versäumnis gerne ausgleichen und eine Image Library für Silverlight entwickeln.
Leider ist das kein einfaches Unterfangen, deshalb hier meine Fragen:
(1) Haltet ihr die Machbarkeit eines solchen Projektes für realistisch? PNG, JPG und GIF zu laden und zu speichern ist ja kein einfaches Unterfangen.
(2) Haltet ihr ein solches Projekt für sinnvoll? Silverlight 3 soll ja nächstes Jahr folgen, vll. kommen diese Features dann.
(3) Besteht an der Verwendung eines solchen Projektes interesse?
(4) Gibt es Interessenten mit ausreichend Wissen und Motivation eine solchen Bibliothek mitzuentwickeln? Ich denke alleine ist so etwas nicht in absehbarer Zeit möglich.
Vielen Danke für alle Antworten,
Sebastian
ImageTools for Silverlight: http://imagetools.codeplex.com | http://www.silverdiagram.net | http://www.cleancodedeveloper.de b:::
Was willst du ausgleichen?
Du redest von
Mir wird nicht ganz klar, was du genau erreichen willst. Mit System.Drawing habe ich doch schon Bildbearbeitungsfunktionen, oder?
Vielleicht kannst du dein Vorhaben noch etwas besser beschreiben, damit auch langsame Menschen wie ich durchblicken.
Silverlight enthält System.Drawing eben nicht, das ist ja grad das Problem dabei.
Genau, das hätte ich vll. expliziter sagen sollen. Silverlight enthält System.Drawing NICHT, das heißt, Bilder können nur dargestellt werden, mehr nicht.
System.Drawing baut auf nativen, unmanaged Funktionen auf. Wohl der Grund warum es nicht in Silverlight ist. Ebenfalls fehlt System.Compression, wohl aus dem gleichen Grund.
ImageTools for Silverlight: http://imagetools.codeplex.com | http://www.silverdiagram.net | http://www.cleancodedeveloper.de b:::
Ach, das finde ich interessant. Ich dachte, System.Drawing gehört zum Subset. Nun verstehe ich natürlich das Problem und den Sinn deiner Projektidee.
Ich fände es gut, wenn eine entspr. Bibliothek da wäre, zumal ich bisher fest damit gerechnet habe, das eine solche zur Verfügung steht.
Danke, wäre trotzdem nett, wenn du meine Fragen beantwortest...
ImageTools for Silverlight: http://imagetools.codeplex.com | http://www.silverdiagram.net | http://www.cleancodedeveloper.de b:::
Machbarkeit: Machbar, du musst dir aber eines schon klar vor Augen führen: Wenn du eine solche Bibliothek entwickelst, sollte sie keine weiteren Abhängigkeiten benötigen. Das heißt, du implementierst die ganzen Low-Level-Details selbst. Das verlangt von dir, dich auf binärer Ebene mit dem Format deiner jeweiligen Grafikdateien auseinanderzusetzen, und die Standardformate solltest du schon unterstützen. Auch mit ihren jeweiligen Eigenheiten. GIFs können animiert sein, PNGs können Alphakanäle speichern.
Was für dich letztlich von Vorteil sein wird: Die Formate wurden schon tausend mal vorher implementiert, du wirst also im Internet auch gute Anhaltspunkte finden. http://www.wotsit.org/ (zwingend mit www-Prefix!) möchte ich mal als Quelle nennen, falls unbekannt.
Voraussetzung sollte meiner Ansicht nach weiterhin sein, dass du die Software öffnest, sprich unter einer Open-Source-Lizenz bereitstellst. So kannst du Sicherheitslücken verhindern. Du weißt ja, je mehr Augen über den Code schauen, desto stabiler wird er. Drüberschauen heißt natürlich nicht, dass jeder mit reinfrickeln sollte, also Repositoryschreibrechte sollte ein von dir ausgewähltes Team haben 😉
Zur Sinnhaftigkeit: Sehr sinnvoll. Silverlight 3 würde ich ignorieren. Wann das kommt steht bislang in den Sternen, was es enthalten wird, ebenso. Und selbst wenn es verfügbar ist, werden viele Firmen und Hobbyentwickler immernoch Version 2 verwenden, weil es ziemlich lange dauern wird, bis die neue Version flächendeckend verbreitet ist.
Mithilfe: Da ich früher viel Low-Level-Programmierung in Assembler und C geleistet habe, generell ja. Nur zeitlich siehts bei mir sehr knapp aus. Aber ab- und zu kann ich ein paar Zeilen hacken. Dazu aber meinerseits zwei Bitten zum Codedesign:
Achja, malignate, eine kleine persönliche Vorstellung deinerseits wäre auch nicht schlecht, um Interessenten zu gewinnen. Welchen Werdegang hast du schon hinter dir, bist du beruflich in der Branche, Student oder Hobbyprogrammierer?
Nicht falsch verstehen, aber die Gesichter in einem Forum sind recht unterschiedlich und ich traue ein solches Werk (vorallem die Koordinierung) eher einem Berufsinformatiker oder Studenten als einem Schüler zu.
Mit dem Code Design, brauchst dir keine Sorgen machen 😉
...ansonsten sehe ich das wie du und danke für die Antwort
Ich werde mal die Tage ein Projekt auf codeproject starten und ein paar Basis Klassen anlegen.
Eine Vorstellung ist verständlich:
Ich bin 21 und bin von allem etwas 😉:
ImageTools for Silverlight: http://imagetools.codeplex.com | http://www.silverdiagram.net | http://www.cleancodedeveloper.de b:::
Ok, dann steht ja dem nächsten Kick-Ass-Batman-Utility-Belt-Opensource-Projekt nichts mehr im Wege. Viel Erfolg.
Um Dein Profil zu schärfen, sei mir der kleine Hinweis erlaubt, das "KIT" Das Karlsruher Institut für Technologie ist. Und ein Zusammenschluss der Elite Uni Karlsruhe und des Forschungszentrums darstellt.
Auch von mir viel Erfolg dabei - ich bin gespannt!
"In der Informatik geht es genauso wenig um Computer wie in der Astonomie um Teleskope."
Edsger Dijkstra
News im ersten Beitrag.
ImageTools for Silverlight: http://imagetools.codeplex.com | http://www.silverdiagram.net | http://www.cleancodedeveloper.de b:::
Wollte noch bis am Wochenende warten, aber jetzt muss ich halt Kritik über mich ergehen lassen 😉:
ImageTools for Silverlight: http://imagetools.codeplex.com | http://www.silverdiagram.net | http://www.cleancodedeveloper.de b:::
Hi,
was mir spontan eingefallen ist, da du eh nur mit 32-bit Bitmaps arbeitest, könntest du intern als Datenstruktur ja anstatt dem byte[]-Array gleich ein Color[]-Array nehmen.
(der Code wird etwas simpler und der Zugriff sogar schneller)
nur so als anregung.
(hab aber mangels zeit nicht weiter intensiv reingeguckt)
beste Grüße
zommi
Das habe ich mir auch lange überlegt und bei dem Punkt bin ich mir immer noch nicht simpler.
Der Code wird in der Tat einfacher, aber inwiefern das schneller sein soll verstehe ich nicht ganz. Da das ein struct ist müss bei jeder Methode immer eine neue Instanz erstellt werden, das kann doch irgendwie nicht schneller als einfache bytes sein oder täusche ich micht?
ImageTools for Silverlight: http://imagetools.codeplex.com | http://www.silverdiagram.net | http://www.cleancodedeveloper.de b:::
Mal eine Frage am rande: wollte das jetzt einmal in einem Silverlight Testprojekt anschauen, da das ja eine Image Library für Silverlight werden soll. Jedoch schaut das aus, als wäre es eine normale Windows Class Library und keine Silverlight und ich kann die DLL auch in keine Silverlight-Anwendung einbinden. Mach ich da jetzt nur was falsch, oder ist das gewollt, bzw. jetzt zu Testzwecken nur in Windows Forms (oder WPF) möglich? Dein Screenshot von oben ist ja auch Windows Forms, das macht ja eigentlich für Silverlight nicht wirklich sinn. Evtl. hab ich auch nur was überlesen?
Martin Bauer - bauer-martin.com
Das ist Absicht. Da Silverlight nur PNGs und JPGs kann muss das Image in ein unkomprimiertes PNG umgewandelt werden, dass dann als Stream Silverlight übergeben wird und da dieser Encoder einfach noch nicht fertig ist, kann man auch nicht testen und ich habe deshalb erstmal ne normale Dll und ne Winforms Testanwendung gemacht.
ImageTools for Silverlight: http://imagetools.codeplex.com | http://www.silverdiagram.net | http://www.cleancodedeveloper.de b:::
Das mit den PNG ist mir ja klar. Nur soweit bin ich eben nicht gekommen, da ich die DLL nicht in Silverlight laden konnte.
Aber macht es nicht Sinn, das ganze gleich von Anfang an in Silverlight zu machen bzw. zu testen? Wenn Du jetzt viel Energie in Sachen steckst, wo du später feststellt, die gehen einfach nicht mit SL, was dann?
Martin Bauer - bauer-martin.com
Ich weiß dass es geht 😉 ... gibt ein paar Demos dazu im Netz. Hast aber natürlich recht, mein nächster Task ist eine einfacher PNG Encoder und sobald der steht, wird das alles nach Silverlight portiert.
EDIT: Zum Testen des Encoders brauchte ich aber Beispielbilder und die habe ich Danke BMP Decoder ja. Zu mehr war die Winforms-Demo auch gar nicht gedacht. Jetzt wo ich weiß, dass ich korrekte Bilder im Speicher habe, kann ich ja problemlos meinen PNG Encoder testen.
ImageTools for Silverlight: http://imagetools.codeplex.com | http://www.silverdiagram.net | http://www.cleancodedeveloper.de b:::
Dann muss ich mich jetzt leider noch gedulden bis das in Silverlight funktioniert. Bin aber schon gespannt, da ich vor kurzem auch das Problem mit Bilderbearbeitung in Silverlight hatte.
Martin Bauer - bauer-martin.com
Ich versuche bis Sonntag was Silverlight-mäßiges fertig zu haben 😉
ImageTools for Silverlight: http://imagetools.codeplex.com | http://www.silverdiagram.net | http://www.cleancodedeveloper.de b:::
Ich konnte leider mein Versprechen nicht ganz einhalten und habe 30 min überzogen, dafür konnte ich einen PNG Decoder mit Unterstützung für die wichtigsten Formate fertig machen einen ersten PNG Encoder und das ganze läuft auch unter Silverlight nun.
Den Link zur Demo will ich euch natürlich nicht vorenthalten:
http://www.gpstudio.de/Silverlight.html
Die Umsetzung der Demo ist nicht so das ware, ich weß, aber vll. hat mal irgendein Expression Blend - Crack Lust das irgendwie grafisch aufzuwerten, aber ist erstmal nicht so wichtig.
Den Source gibts leider noch nicht, ich muss morgen erstmal aufräumen und das ganze Winforms Zeug rausschmeißen und dann stelle ich mich der Kritik 😉.
Schönen Abend noch,
Sebastian
PS: Würde mich weiterhin um Mitentwickler freuen, falls jemand gerade nix zu tun hat...
EDIT: Die Fehler im linken oberen Bild sind nocht vom Laden, sondern weil ich ausversehen ein altes Bild eingebunden habe, das beim Entwickeln entstanden ist...
ImageTools for Silverlight: http://imagetools.codeplex.com | http://www.silverdiagram.net | http://www.cleancodedeveloper.de b:::
Update im ersten Post
ImageTools for Silverlight: http://imagetools.codeplex.com | http://www.silverdiagram.net | http://www.cleancodedeveloper.de b:::
Und wieder ein Update...
ImageTools for Silverlight: http://imagetools.codeplex.com | http://www.silverdiagram.net | http://www.cleancodedeveloper.de b:::
Weiter gehts bei Silverlight Image Tools. Deswegen hier ==> geschlossen.