2008-08-16 11 views
9

.netの代替画像操作ライブラリはありますか?私は管理され、オープンソースであるものを好むだろう。System.Drawing/GDIなしのasp.net/c#での画像操作

私は2つの理由でこれを頼む:私はasp.netのWebアプリケーションでSystem.Drawingを使用していることを読んだ私は、過去

  • にSystem.DrawingでデバッグGDI +エラーのためにハードに遭遇している

    1. 100%サポートされていません。

    ありがとう!

    編集:明確化、私は、System.Drawingがasp.netのWebアプリケーションを働かせることができることを知っている - 私は過去にそれを使用しています。 .NETの任意の管理対象のイメージ操作ライブラリがある場合、私は本当にただ不思議:)

  • +0

    管理されたビットマップ操作は、本質的に遅いです。高速なjpegエンコーディングとデコードを行うためにはアセンブリレベルの最適化(SSE)が必要であるため、使用可能なものはほとんどが管理されたラッパーです。私は[ImageResizing.Netライブラリ](http://imageresizing.net)を見てみることをお勧めします。それはほとんどの人々が必要とするものの99%を行い、GDIのすべてのバグや癖を処理します。また、数百万のイメージと何百万人もの訪問者を持つウェブサイトを適切に運用することも知っています。 –

    答えて

    2

    は、(市販のいくつかがあるように見えますが、OSSは、移動するための方法です)。ただし、the Mono bindings to Cairoを参照することがあります。

    Cairoはプラットフォームに依存しない2D描画APIです。詳細はthe Cairo homepageにあります。 Cairo Wikipedia pageにもいくつかの良い情報があります。

    カイロはオープンソースの世界でもかなり広く使用されています。私にはその頑強さについて何か言われています。 Mozilla、Webkit、Monoはすべて、それを使用します。皮肉なことに、Monoは実際にSystem.Drawingの実装を元に戻します。私はそれでもうまくいく方法やかはわからないけれども

    も、マイクロソフトの実装のためのドロップイン置換としてMonoのたSystem.Drawing実装を使用する方法があるかもしれません。おそらく、System.Drawing.dllの参照をMonoのバージョンに置き換えてから、エラーを処理しようとします。

    +0

    MonoのSystem.Drawingが1のために、...一種の不完全なのdrawImageです、オーバーロードの多くを実装していない...私はhttp://imageresizing.netライブラリでモノをサポートできるように回避策を見つけようとしています。 –

    +0

    Monoの最新バージョンはDrawImageをサポートしています。 –

    0

    (1)に関しては、デバッグエラーにハードのほとんどは、管理対象の土地で開いているハンドル(廃棄を()閉じていないに起因するものです)。あなたが聞いたところで私は好奇心が強いです(2)。

    +1

    マイクロソフトでは、(2)の.NETドキュメントに警告があります。http://msdn.microsoft.com/en-us/library/system.drawing.aspx –

    1

    事例証拠#1:私は何の問題もなくASP.NET内でオンザフライ画像作成のためのGDI +を使用していました。私は問題がどんなものであろうとも確信していません。私は無料またはオープンソースのいずれかである任意の完全に管理された2D描画ライブラリを知らない

    +0

    System.Drawing名前空間はサポートされていません。 http://msdn.microsoft.com/en-us/library/system.drawing.aspx 深刻な問題が発生する可能性が間違いなくあります..だから – noocyte

    4

    the WPF Imaging libraries shipped with .NET 3.0をご覧ください。それらは最適化され、堅牢です(Aeroの実行に使用されるので、効率的です)。 WPFディスパッチャーに依存せず、簡単に拡張でき、正式にサポートされています。何がもっと欲しい?

    +0

    AeroがWPF上で動作しないことを確かめてください.WindowsでAeroを動作させるために.NETをインストールする必要はありません。 – rossisdead

    +0

    明らかにWPFにはasp.netを通してそれ自身の問題があります。 Bertrand Le Roy - http://weblogs.asp.net/bleroy/archive/2010/01/21/server-side-resizing-with-wpf-now-with-jpgの「更新」とコメントセクションを参照してください。 aspx – EBarr