2016-09-20 8 views
5

में बाइटस्ट्रिंग जेनरेट करें उदाहरण के लिए मैं eample-1 उदाहरण के अनुसार हास्केल-चार्ट का उपयोग करता हूं। हास्केल-चार्ट दायर करने के लिएहास्केल-चार्ट

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

यह संभव ByteString बजाय फाइल करने के लिए चार्ट की सामग्री उत्पन्न है सामग्री उत्पन्न करता है? मुझे प्रलेखन में कोई समाधान नहीं मिल रहा है।

उत्तर

6

दुर्भाग्य से यह संभव नहीं है एक सीधा तरीका है। toFilecairo लाइब्रेरी जैसे withPDFSurface, withSVGSurface में फ़ंक्शंस पर कॉल करता है जो स्वयं ही कैरो सी-लाइब्रेरी में कॉल करते हैं और केवल फ़ाइल नाम लेते हैं।

तुम हमेशा एक अस्थायी फ़ाइल पर लिखने और इस तरह पीठ में सामग्री पढ़ सकते हैं:

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