2016-09-20 14 views
5

Tôi sử dụng Biểu đồ Haskell theo ví dụ eample-1. Haskell-Chart tạo nội dung cho tệpTạo ByteString trong Haskell-Chart

toFile def "example1_big.png" $ do 
... 

Có thể tạo nội dung biểu đồ cho ByteString thay vì tệp không? Tôi không thể tìm thấy giải pháp trong tài liệu.

Trả lời

6

Thật không may điều này là không thể là một cách trực tiếp. toFile gọi đến các chức năng trong thư viện cairo như withPDFSurface, withSVGSurface mà chính chúng sẽ gọi vào thư viện C của Cairo và chỉ lấy tên tệp.

Bạn luôn có thể viết vào một tập tin tạm thời và đọc nội dung lại như thế này:

import System.IO.Temp -- from the temporary package 
import qualified Data.ByteString.Char8 as BS 

... 
bs <- withSystemTempFile "chart-XXXXXXX" $ \path _ -> do 
     toFile def path $ do ... 
     BS.readFile path 
Các vấn đề liên quan