Graphics 从Ocaml图形中的文件加载图像

Graphics 从Ocaml图形中的文件加载图像,graphics,ocaml,Graphics,Ocaml,我正在阅读,没有任何关于从文件加载图像的信息,只有从彩色数组加载的信息。我该怎么做呢?例如,假设我有file.png,我想在坐标(x,y)处绘制,旋转z度。库可以加载png文件(如果它们没有以RGBA或CMYK格式表示)。一个简单的例子: open Images let () = Graphics.open_graph "";; let img = Png.load "png.png" [];; let g = Graphic_image.of_image img;; Graphics.d

我正在阅读,没有任何关于从文件加载图像的信息,只有从彩色数组加载的信息。我该怎么做呢?例如,假设我有
file.png
,我想在坐标
(x,y)
处绘制,旋转
z
度。

库可以加载png文件(如果它们没有以RGBA或CMYK格式表示)。一个简单的例子:

open Images

let () = Graphics.open_graph "";;

let img = Png.load "png.png" [];;
let g = Graphic_image.of_image img;;

Graphics.draw_image g 0 0;;

Unix.sleep 10;;
let png = Sdlloader.load_image "png.png"

let png_rot = Sdlgfx.rotozoomSurface png 45.0 1.0 true;;

Sdl.init [`VIDEO];;
let screen = Sdlvideo.set_video_mode ~w:250 ~h:166 [];;

Sdlvideo.(blit_surface ~dst_rect:{ r_x = 0; r_y = 0; r_w = 250; r_h = 166}
                       ~src:png_rot ~dst:screen ());;

Sdlvideo.flip screen;
Sdltimer.delay 10000;
Sdl.quit ();;
要运行:

opam install graphics camlimages
ocamlfind ocamlc -o test -package graphics -package unix \
    -package camlimages.png -package camlimages.graphics \
    -linkpkg test.ml
wget https://bytebucket.org/camlspotter/camlimages/raw/1611545463f493462aeafab65839c1112162559a/test/images/png.png
./test
(根据实际情况。)

但是,我不认为camlimages可以旋转PNG。您可以滚动自己的旋转功能(改编自):

或者,您可以使用类似的函数
Sdlgfx.rotozoomSurface

一个简单的例子:

open Images

let () = Graphics.open_graph "";;

let img = Png.load "png.png" [];;
let g = Graphic_image.of_image img;;

Graphics.draw_image g 0 0;;

Unix.sleep 10;;
let png = Sdlloader.load_image "png.png"

let png_rot = Sdlgfx.rotozoomSurface png 45.0 1.0 true;;

Sdl.init [`VIDEO];;
let screen = Sdlvideo.set_video_mode ~w:250 ~h:166 [];;

Sdlvideo.(blit_surface ~dst_rect:{ r_x = 0; r_y = 0; r_w = 250; r_h = 166}
                       ~src:png_rot ~dst:screen ());;

Sdlvideo.flip screen;
Sdltimer.delay 10000;
Sdl.quit ();;
在系统上安装适当的SDL软件包后(并非总是容易…),要运行:


图形库非常小,您需要一个更大的库,如
opam install ocamlsdl
ocamlfind ocamlc -o test -package sdl -package sdl.sdlimage \
    -package sdl.sdlgfx -linkpkg test.ml
./test