CAMLIMAGE должен сделать это. Существует также пакет debian (libcamlimage-ocmal-dev
), а также установка через godi , если вы используете его для управления пакетами ocaml.
В качестве полезного примера чтения и манипулирования изображениями в ocaml, я предлагаю просмотреть код алгоритма удаления шва на eigenclass .
Вы также можете, как сказал Джонатан - но не очень хорошо - вызывать функции C из ocaml, такие как ImageMagick . Несмотря на то, что вы собираетесь сделать много манипуляций с данными изображения, чтобы привести изображение в ocaml, вы всегда можете написать c для всех ваших функций, чтобы манипулировать изображением как абстрактным типом данных - это, кажется, полностью противоположно Вы хотите, хотя, писать большую часть программы на C, а не ocaml.
Поскольку я недавно хотел поиграться с камлимажами (и у меня возникли некоторые проблемы с его установкой - мне пришлось изменить два файла ml из-за ошибок компиляции, хотя и очень простых). Вот быстрая программа, black_and_white.ml
, и как ее скомпилировать. Это должно заставить кого-то безболезненно начать работу с пакетом (особенно с динамической генерацией изображения):
let () =
let width = int_of_string Sys.argv.(1)
and length = int_of_string Sys.argv.(2)
and name = Sys.argv.(3)
and black = {Color.Rgb.r = 0; g=0; b=0; }
and white = {Color.Rgb.r = 255; g=255; b=255; } in
let image = Rgb24.make width length black in
for i = 0 to width-1 do
for j = 0 to (length/2) - 1 do
Rgb24.set image i j white;
done;
done;
Png.save name [] (Images.Rgb24 image)
и для компиляции,
ocamlopt.opt -I /usr/local/lib/ocaml/camlimages/ ci_core.cmxa graphics.cmxa ci_graphics.cmxa ci_png.cmxa black_and_white.ml -o black_and_white
и бежать,
./black_and_white 20 20 test1.png