Laden...

Silverlight Image Library

Erstellt von malignate vor 15 Jahren Letzter Beitrag vor 13 Jahren 10.007 Views
Thema geschlossen
malignate Themenstarter:in
742 Beiträge seit 2005
vor 15 Jahren
Silverlight Image Library

Die Arbeit ist nun in vollem Gange und folgende Feature werden unterstützt:

  • Image Klasse (angelehnt an System.Drawing)
  • Bitmap Laden (RGB 1, 4, 8, 16, 24 und 32, zum Teil noch nicht getestet)
  • Bitmap Speichern (RGB 24, alles andere macht heutzutage keinen Sinn denke ich)
  • Laden und Speichern von PNG Bildern
  • Laden und Speichern von JPG Bildern
  • Laden von GIFs, sowohl animiert, also auch nicht animiert.
  • Filter:
    > Inverter
    > Grayscale (2x)
    > Sepia

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:

  • Filter (Gaussian Blur, Bloom, Verzerrung etc. - einfach mal Photoshop oder Paint.NET anschmeißen und schauen, was es da nettes gibt 😉)

[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

M
303 Beiträge seit 2006
vor 15 Jahren

Was willst du ausgleichen?
Du redest von

  • Einem Uploadsteuerelement f. Bilder
  • Komprimierten Bildern
  • Laden und speichern verschiedener Formate

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.

F
240 Beiträge seit 2006
vor 15 Jahren

Silverlight enthält System.Drawing eben nicht, das ist ja grad das Problem dabei.

malignate Themenstarter:in
742 Beiträge seit 2005
vor 15 Jahren

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.

M
303 Beiträge seit 2006
vor 15 Jahren

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.

malignate Themenstarter:in
742 Beiträge seit 2005
vor 15 Jahren

Danke, wäre trotzdem nett, wenn du meine Fragen beantwortest...

M
303 Beiträge seit 2006
vor 15 Jahren

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:

  • ENGLISCHE Bezeichner, kein "Denglisch"! Kein "ZeichneRect"
  • C# Konventionen, kein "drawRect()"
  • Keine kryptischen Prefixes vor Klassennamen, kein "XYGraphics". Dazu sind Namespaces da!
M
303 Beiträge seit 2006
vor 15 Jahren

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.

malignate Themenstarter:in
742 Beiträge seit 2005
vor 15 Jahren

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 😉:

  • Jeden Donnerstag und in den Semesterferien bin ich "Freiberufler" und entwickel für ein Unternehmen in Karlsruhe mit .NET
  • Tagsüber bin ich Student am KIT (:D)
  • Abends bin ich Hobby-Programmierer
M
303 Beiträge seit 2006
vor 15 Jahren

Ok, dann steht ja dem nächsten Kick-Ass-Batman-Utility-Belt-Opensource-Projekt nichts mehr im Wege. Viel Erfolg.

H
182 Beiträge seit 2006
vor 15 Jahren

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

malignate Themenstarter:in
742 Beiträge seit 2005
vor 15 Jahren

News im ersten Beitrag.

M
303 Beiträge seit 2006
vor 15 Jahren

Sieht schon ganz gut aus. Where's the source?

malignate Themenstarter:in
742 Beiträge seit 2005
vor 15 Jahren

Wollte noch bis am Wochenende warten, aber jetzt muss ich halt Kritik über mich ergehen lassen 😉:

http://www.codeplex.com/imagetools

1.361 Beiträge seit 2007
vor 15 Jahren

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

malignate Themenstarter:in
742 Beiträge seit 2005
vor 15 Jahren

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?

G
146 Beiträge seit 2006
vor 15 Jahren

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

malignate Themenstarter:in
742 Beiträge seit 2005
vor 15 Jahren

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.

G
146 Beiträge seit 2006
vor 15 Jahren

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

malignate Themenstarter:in
742 Beiträge seit 2005
vor 15 Jahren

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.

G
146 Beiträge seit 2006
vor 15 Jahren

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

malignate Themenstarter:in
742 Beiträge seit 2005
vor 15 Jahren

Ich versuche bis Sonntag was Silverlight-mäßiges fertig zu haben 😉

malignate Themenstarter:in
742 Beiträge seit 2005
vor 15 Jahren

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...

malignate Themenstarter:in
742 Beiträge seit 2005
vor 15 Jahren

Update im ersten Post

malignate Themenstarter:in
742 Beiträge seit 2005
vor 15 Jahren

Und wieder ein Update...

49.485 Beiträge seit 2005
vor 13 Jahren

Weiter gehts bei Silverlight Image Tools. Deswegen hier ==> geschlossen.

Thema geschlossen