У меня есть файлы PNG и библиотека Gloss имеет конструктор Bitmap
для Picture
. Я не могу использовать loadBMP :: FilePath -> IO Picture
из-за типа файла, поэтому я ищу, как загрузить файл PNG, преобразовать его в BMP и передать в bitmapOfBMP :: BMP -> Picture
, bitmapOfForeignPtr :: Int -> Int -> ForeignPtr Word8 -> Bool -> Picture
или bitmapOfByteString :: Int -> Int -> ByteString -> Bool -> Picture
.
Тест с JuicyPixels
import Data.ByteString as B
import System.IO as A
import Codec.Picture.Png
import Graphics.Gloss.Interface.Pure.Game
main = do
png <- B.readFile "samus.png"
let img = decodePng png
case img of
Left x -> A.putStrLn x
Right x -> do
let bmp = encodeDynamicPng x
case bmp of
Left x -> A.putStrLn x
Right x -> do
let pic = bitmapOfByteString 29 52 x True
game pic
game pic
= play
(InWindow "Test" (700, 500) (10, 10))
white
30
pic
draw
(const id)
(const id)
draw bmp
= bmp
Все получается, но изображение совсем не то.
\_ -> id
совпадает сconst id
. - person huon   schedule 01.09.2012