sig
  val image_read : string -> Magick.image
  val new_image : int -> int -> Magick.color -> Magick.image
  val image_display : Magick.image -> unit
  val image_write : Magick.image -> filename:string -> unit
  val image_charcoal :
    Magick.image -> radius:float -> sigma:float -> Magick.image
  val image_blur :
    Magick.image -> radius:float -> sigma:float -> Magick.image
  val image_spread : Magick.image -> radius:float -> Magick.image
  val image_sharpen :
    Magick.image -> radius:float -> sigma:float -> Magick.image
  val image_shade :
    Magick.image ->
    gray:bool -> azimuth:float -> elevation:float -> Magick.image
  val image_edge : Magick.image -> radius:float -> Magick.image
  val image_despeckle : Magick.image -> Magick.image
  val image_emboss :
    Magick.image -> radius:float -> sigma:float -> Magick.image
  val image_colorspace_transform :
    Magick.image -> Magick.ColorSpace.t -> unit
  val image_scale : Magick.image -> size:int * int -> Magick.image
  val image_composite :
    Magick.image ->
    Magick.CompositeOp.t -> Magick.image -> int -> int -> unit
  val image_modulate : Magick.image -> modulate:int * int * int -> unit
  val image_brightness : Magick.image -> int -> unit
  val image_saturation : Magick.image -> int -> unit
  val image_hue : Magick.image -> int -> unit
  val image_negate : Magick.image -> unit
  val image_equalize : Magick.image -> unit
  module Color :
    sig
      type t = Magick.color
      val map8 : Magick.Magick.Color.t -> Magick.Magick.Color.t
    end
  module Prim :
    sig
      type t
      val draw_point : int * int -> Magick.Magick.Prim.t
      val draw_line : int * int -> int * int -> Magick.Magick.Prim.t
      val draw_rectangle : int * int -> int * int -> Magick.Magick.Prim.t
      val draw_circle : int * int -> int -> Magick.Magick.Prim.t
      val draw_ellipse : int * int -> int * int -> Magick.Magick.Prim.t
      val draw_qbcurve :
        int * int -> int * int -> int * int -> Magick.Magick.Prim.t
      val draw_cbcurve :
        int * int ->
        int * int -> int * int -> int * int -> Magick.Magick.Prim.t
      val draw_polygon : (int * int) list -> Magick.Magick.Prim.t
      val draw_text : int * int -> string -> string
    end
  val fill_primitive :
    Magick.image ->
    prim:Magick.Magick.Prim.t -> ?fill:Magick.Magick.Color.t -> unit -> unit
  val stroke_primitive :
    Magick.image ->
    prim:Magick.Magick.Prim.t ->
    ?stroke:Magick.Magick.Color.t -> ?stroke_width:float -> unit -> unit
  val draw_text :
    Magick.image ->
    pos:int * int ->
    s:string ->
    ?font:string ->
    ?pointsize:float ->
    ?fill:Magick.Magick.Color.t ->
    ?stroke:Magick.Magick.Color.t -> ?stroke_width:float -> unit -> unit
end