2008-08-16 26 views
9

Có thư viện thao tác hình ảnh thay thế nào cho .net không? Tôi thích cái gì đó được quản lý và nguồn mở.Thao tác hình ảnh trong asp.net/c# mà không có System.Drawing/GDI +

Tôi yêu cầu này vì hai lý do:

  1. tôi đã gặp khó khăn để gỡ lỗi GDI + lỗi với System.Drawing trong quá khứ
  2. Tôi đã đọc rằng việc sử dụng System.Drawing trong các ứng dụng web asp.net không được hỗ trợ 100%.

Cảm ơn!

chỉnh sửa: làm rõ, tôi biết rằng System.Drawing có thể làm việc ứng dụng web asp.net - Tôi đã sử dụng nó trong quá khứ. Tôi thực sự tự hỏi nếu có bất kỳ thư viện thao tác hình ảnh nào được quản lý cho .net :)

+0

Hoạt động bitmap được quản lý vốn đã chậm. Khá nhiều thứ có thể sử dụng sẽ là một trình bao bọc được quản lý, vì các tối ưu hóa mức lắp ráp (SSE) là cần thiết để có được giải mã và giải mã jpeg nhanh. Tôi đề nghị bạn hãy xem [thư viện ImageResizing.Net] (http://imageresizing.net). Nó chiếm 99% những gì hầu hết mọi người cần, và nó xử lý tất cả các lỗi và những điều kỳ quặc của GDI. Nó cũng được biết để chạy đúng trang web với hàng triệu hình ảnh và hàng triệu du khách. –

Trả lời

2

Tôi không biết bất kỳ thư viện vẽ 2D được quản lý hoàn toàn nào miễn phí hoặc nguồn mở (dường như có sẵn một số phương tiện thương mại, nhưng OSS là cách để đi). Tuy nhiên, bạn có thể xem xét the Mono bindings to Cairo.

Cairo là một API bản vẽ 2D độc lập trên nền tảng. Bạn có thể tìm thêm thông tin về nó tại the Cairo homepage. Cairo Wikipedia page cũng có một số thông tin tốt.

Cairo cũng được sử dụng khá rộng rãi trong thế giới mã nguồn mở, mà tôi nói điều gì đó về tính bền vững của nó. Mozilla, Webkit và Mono đều sử dụng nó, trong số những thứ khác. Trớ trêu thay, Mono thực sự sử dụng nó để quay trở lại thực hiện System.Drawing của họ ... đi con số.

Cũng có thể có cách để sử dụng tính năng System.Drawing của Mono dưới dạng thay thế thả xuống cho việc triển khai Microsoft, mặc dù tôi không chắc chắn cách thức hoặc liệu nó có hoạt động hay không. Tôi có lẽ sẽ bắt đầu bằng cách thay thế các tham chiếu System.Drawing.dll với phiên bản của Mono, và sau đó cố gắng để đối phó với bất kỳ lỗi nào.

+0

Hệ thống của Mono. Rút gọn là loại chưa hoàn thành ... DrawImage, cho một , không thực hiện nhiều quá tải ... Tôi đang cố tìm một giải pháp thay thế để tôi có thể hỗ trợ Mono trong thư viện http://imageresizing.net. –

+0

Phiên bản mới nhất của Mono hỗ trợ DrawImage, vì vậy nhiều thao tác hiện hoạt động. –

0

Đối với (1), hầu hết các lỗi khó gỡ lỗi là do không đóng chốt mở (Vứt bỏ() trong đất được quản lý). Tôi tò mò nơi bạn nghe (2).

+1

Microsoft có cảnh báo trong tài liệu .NET cho (2): http://msdn.microsoft.com/en-us/library/system.drawing.aspx –

1

Bằng chứng giai thoại # 1: Tôi đã sử dụng GDI + để tạo hình ảnh trực tiếp trong ASP.NET mà không gặp vấn đề gì. Tôi không chắc vấn đề này sẽ là gì.

+0

Không gian tên System.Drawing không được hỗ trợ, MS cho biết: http://msdn.microsoft.com/en-us/library/system.drawing.aspx Vì vậy, cơ hội gặp phải vấn đề nghiêm trọng là chắc chắn ở đó .. – noocyte

4

Bạn nên xem xét the WPF Imaging libraries shipped with .NET 3.0. Chúng được tối ưu hóa và mạnh mẽ (được sử dụng để chạy Aero, vì vậy bạn biết chúng hiệu quả). Chúng không phụ thuộc vào điều phối WPF, có thể dễ dàng mở rộng và được hỗ trợ chính thức. Bạn có cần gì nữa không?

+0

Khá chắc chắn rằng Aero không chạy trên WPF, nhìn thấy như bạn không cần phải có. NET cài đặt để có được Aero làm việc trong Windows. – rossisdead

+0

Rõ ràng WPF có vấn đề của riêng nó thông qua asp.net. Xem phần "cập nhật" và nhận xét từ Bertrand Le Roy - http://weblogs.asp.net/bleroy/archive/2010/01/21/server-side-resizing-with-wpf-now-with-jpg. aspx – EBarr

Các vấn đề liên quan