К сожалению, в настоящее время невозможно достичь этого эффекта на уровне схемы.
Вы должны понять, как реализовать это на прикладном уровне.
Если это отношение
BLOCKQUOTE>LIKED
отличается от других отношенийLIKED
(т. е. отношения LIKED между парой меток других узлов), тогда вы можете назвать его как угодно и создать «ограничение существования свойства отношения» [115 ] на это.
Я не знаю out-of-the поля способ сделать это. Вы могли открыть файл с open_in
и считайте его байт за один раз с input_char
, впитайте заголовок и данные и растите color array array
тот путь к простым форматам (например, BMPs), но к чему-либо как JPGs или PNGs, решением для самокрутки, вероятно, было бы больше работы, чем Вы, хочет войти.
Если Вы не хотите использовать CAMLIMAGE, обычно необработанный RGB или PNM/PPM (которые имеют легкое для создания формата заголовка, сопровождаемого значениями RGB), изображения используются. ImageMagick позволяет Вам затем просматривать, это форматирует, или преобразуйте их в большее количество применимых форматов.
CAMLIMAGE должен сделать это. Существует также debian пакет (libcamlimage-ocmal-dev
), а также установка через godi, если Вы используете это для управления ocaml пакетами.
Как полезный пример чтения и управления изображениями в ocaml, я предлагаю просмотреть код для алгоритма удаления шва в eigenclass.
Вы можете также, как указано jonathan - но не хорошо - вызывают функции C от ocaml, такие как ImageMagick. Хотя Вы собираетесь сделать большое управление данными изображения для подачи изображения в ocaml, можно всегда писать c для всех функций для управления изображением как абстрактным типом данных - это, кажется, полностью противоположность того, что Вы хотите хотя, пишущий большую часть программы в C не ocaml.
Так как я недавно хотел играть вокруг с camlimages (и испытал некоторые затруднения при установке его - я должен был изменить два из 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