2010-08-19 39 views
18

Câu trả lời similar question's tất cả yêu cầu tệp này phải được lưu. Tuy nhiên, tôi đang cố chuyển đổi tệp và sau đó sao chép tệp vào khay nhớ tạm.Chuyển đổi BMP sang PNG trong bộ nhớ để dán Clipboard vào .Net

Làm cách nào để chuyển đổi một ảnh bitmap (hoặc bất kỳ hình ảnh nào) thành PNG mà không lưu nó vào hệ thống tệp?

Cập nhật:
Tôi đang cố gắng dán hình ảnh vào một ứng dụng (trong trường hợp này là Evernote). Khi bạn sao chép hình ảnh vào khay nhớ tạm (ví dụ: thông qua trình duyệt), nó sẽ ghi nhớ định dạng hình ảnh của nó và khi bạn dán nó vào, nó sẽ tạo ra một hình ảnh với cùng định dạng chính xác. Ví dụ: nếu bạn sao chép PNG, nó sẽ dán PNG. Nếu bạn sao chép JPG, nó sẽ dán JPG, v.v.

Tôi đang cố gắng chụp bất kỳ hình ảnh nào trong khay nhớ tạm, chia tỷ lệ đó thành kích thước tôi muốn và giữ nó trong khay nhớ tạm dưới dạng PNG, sao cho khi nó được dán vào Evernote, nó sẽ tạo ra một PNG.

Khi tôi sao chép hình ảnh PNG trong trình duyệt của mình, tôi thấy các định dạng sau: HTML FORMAT, CF_BITMAP, CF_DIB, CF_DIBV5. Tôi không chắc chắn Evernote nào đang sử dụng để dán. Tôi đã được ấn tượng rằng nó là CF_BITMAP, nhưng sau khi đọc các ý kiến ​​dưới đây, tôi đoán nó sử dụng một trong các định dạng khác.

Làm cách nào để đặt hình ảnh trong khay nhớ tạm sẽ được coi là PNG khi được dán?

+0

nơi nào bạn có kế hoạch dán nó? Tôi nghĩ rằng clipboard không lưu trữ hình ảnh ở định dạng tệp như jpg/png. trừ khi bạn đang có kế hoạch dán nó vào một thư mục như một tập tin? – russau

+0

@russau: Tôi đã cập nhật câu hỏi để làm rõ những gì tôi đang cố gắng làm. – Senseful

+0

_ "Khi bạn sao chép một hình ảnh vào clipboard (ví dụ: thông qua trình duyệt), nó sẽ ghi nhớ định dạng hình ảnh của nó" _ - Điều này hoàn toàn sai. Bạn có thể khó hiểu điều này vì một số ứng dụng sử dụng luồng bộ nhớ png để bù đắp cho thực tế khay nhớ tạm Windows chuẩn không có hỗ trợ minh bạch. – Nyerguds

Trả lời

24

Save the Bitmap đến một MemoryStream

byte[] result = null; 
using (MemoryStream stream = new MemoryStream()) 
{ 
    bitmap.Save(stream, ImageFormat.Png); 
    result = stream.ToArray(); 
} 
+0

Loại kết quả là gì? – Senseful

+1

đó là mảng byte, đã cập nhật câu trả lời – russau

+0

Bạn có thể đưa mã cần thiết để chuyển đổi nó thành 'Hình ảnh' không? (Tôi đang cố gắng tìm ra điều này ngay bây giờ và tôi sẽ đăng nó như một bình luận để bạn có thể sao chép/dán) – Senseful

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