imagemagick
| Kind | ffi-c |
|---|---|
| Capabilities | ffi file process |
| Categories | multimedia image graphics |
| Keywords | imagemagick image graphics resize convert manipulation |
ImageMagick bindings for Kit - image processing and manipulation
Files
| File | Description |
|---|---|
.editorconfig | Editor formatting configuration |
.gitignore | Git ignore rules for build artifacts and dependencies |
.tool-versions | asdf tool versions (Zig, Kit) |
LICENSE | MIT license file |
README.md | This file |
examples/basic.kit | Basic usage example |
examples/filters.kit | Example: filters |
examples/pipe.kit | Example: pipe |
kit.toml | Package manifest with metadata and dependencies |
src/core.kit | Core module |
src/errors.kit | ImageMagick error type for operation failures. |
src/imagemagick.kit | Main module |
src/pipe.kit | Module for pipe |
tests/imagemagick.test.kit | Tests for imagemagick |
tests/types.test.kit | Tests for types |
Dependencies
No Kit package dependencies.
Native Requirements
This package requires ImageMagick with MagickWand headers and libraries.
Install ImageMagick with your platform package manager:
brew install imagemagickOn Linux:
sudo apt install libmagickwand-devInstallation
kit add gitlab.com/kit-lang/packages/kit-imagemagick.gitUsage
import Kit.Imagemagick as ImageMagick
main = fn =>
# Read an image from disk
match ImageMagick.read "input.jpg"
| Err e -> println "Failed to read image: ${show e}"
| Ok img ->
# Ensure ImageMagick resources are released
defer ImageMagick.free img
# Inspect image properties
println "Dimensions: ${ImageMagick.resolution-string img}"
println "Width: ${Int.to-string (ImageMagick.width img)}"
println "Height: ${Int.to-string (ImageMagick.height img)}"
# Resize and enhance the image
ImageMagick.resize img 800 600
ImageMagick.auto-level img
ImageMagick.sharpen img 0.0 1.0
# Save the processed image
match ImageMagick.write img "output.jpg"
| Ok _ -> println "Image saved to output.jpg"
| Err e -> println "Failed to write image: ${show e}"
mainPipe-friendly usage:
import Kit.Imagemagick as ImageMagick
Pipe = ImageMagick.Pipe
result = Pipe.read "input.jpg"
|>> Pipe.resize 800 600
|>> Pipe.sharpen 0.0 1.0
|>> Pipe.write "output.jpg"
|>> Pipe.free
|>> Pipe.result
match result
| Ok _ -> println "Image saved to output.jpg"
| Err e -> println "ImageMagick error: ${show e}"Development
Running Examples
Run examples with the interpreter:
kit run examples/basic.kit --allow=ffi,file,processCompile examples to a native binary:
kit build examples/basic.kit --allow=ffi,file,process && ./basicRunning Tests
Run the test suite:
kit testRun the test suite with coverage:
kit test --coverageRunning kit dev
Run the standard development workflow (format, check, test):
kit devThis will:
- Format and check source files in
src/ - Type check examples in
examples/ - Run tests in
tests/with coverage
Running Parity Checks
Run interpreter/compiler parity checks for examples:
kit parity --failures-onlyGenerating Documentation
Generate API documentation from doc comments:
kit docNote: Kit sources with doc comments (##) will generate HTML documents in docs/*.html
Cleaning Build Artifacts
Remove generated files, caches, and build artifacts:
kit task cleanNote: Defined in kit.toml.
Local Installation
To install this package locally for development:
kit installThis installs the package to ~/.kit/packages/@kit/imagemagick/, making it available for import as Kit.Imagemagick in other projects.
License
This package is released under the MIT License - see LICENSE for details.
ImageMagick is released under the ImageMagick License.
Exported Functions & Types
ImageMagickError
ImageMagick error type for operation failures.
Variants
ImageMagickReadError {message}ImageMagickWriteError {message}ImageMagickOperationError {message}read-error
Create a read error.
String -> ImageMagickError
write-error
Create a write error.
String -> ImageMagickError
operation-error
Create an operation error.
String -> ImageMagickError
Errors
Error types module - access via IM.Errors.ImageMagickError
read
Read an image from a file.
String -> Result Image ImageMagickError
write
Write an image to a file.
Image -> String -> Result Unit ImageMagickError
free
Free an image and release its resources.
Image -> Unit
clone
Clone an image.
Image -> Result Image ImageMagickError
width
Get image width in pixels.
Image -> Int
height
Get image height in pixels.
Image -> Int
depth
Get image depth in bits.
Image -> Int
resolution-string
Get resolution string "WIDTHxHEIGHT".
Image -> String
print-info
Print image information.
Image -> Unit
resize
Scale image (fast resize).
Image -> Int -> Int -> Result Unit ImageMagickError
flip
Flip image vertically.
Image -> Result Unit ImageMagickError
flop
Flip image horizontally.
Image -> Result Unit ImageMagickError
auto-orient
Auto-orient image based on EXIF data.
Image -> Result Unit ImageMagickError
strip
Strip metadata from image.
Image -> Result Unit ImageMagickError
negate
Negate (invert) colors.
Image -> Result Unit ImageMagickError
normalize
Normalize histogram.
Image -> Result Unit ImageMagickError
auto-level
Auto-level adjustment.
Image -> Result Unit ImageMagickError
auto-gamma
Auto-gamma adjustment.
Image -> Result Unit ImageMagickError
equalize
Equalize histogram.
Image -> Result Unit ImageMagickError
blur
Apply blur.
Image -> Float -> Float -> Result Unit ImageMagickError
gaussian-blur
Apply Gaussian blur.
Image -> Float -> Float -> Result Unit ImageMagickError
sharpen
Sharpen the image.
Image -> Float -> Float -> Result Unit ImageMagickError
edge
Detect edges.
Image -> Float -> Result Unit ImageMagickError
emboss
Apply emboss effect.
Image -> Float -> Float -> Result Unit ImageMagickError
charcoal
Apply charcoal effect.
Image -> Float -> Float -> Result Unit ImageMagickError
despeckle
Reduce noise (despeckle).
Image -> Result Unit ImageMagickError
enhance
Enhance image quality.
Image -> Result Unit ImageMagickError
is-landscape?
Check if image is landscape.
Image -> Bool
is-portrait?
Check if image is portrait.
Image -> Bool
is-square?
Check if image is square.
Image -> Bool
Pipe
Pipe-friendly context API module
read
Read an image and create a pipe context
Parameters:
Returns:
NonEmptyString -> Context
from-image
Create a context from an existing image
Parameters:
Returns:
Image -> Context
result
Get the final result from the pipe
Parameters:
Returns:
Context -> Result Unit ImageMagickError
has-error?
Check if context has an error
Parameters:
Returns:
Context -> Bool
is-ok?
Check if context is ok (no error)
Parameters:
Returns:
Context -> Bool
write
Write image to a file
Parameters:
Returns:
NonEmptyString -> Context -> Context
free
Free the image resources
Parameters:
Returns:
Context -> Context
clone
Clone the image
Parameters:
Returns:
Context -> Context
resize
Resize the image
Parameters:
Returns:
PositiveInt -> PositiveInt -> Context -> Context
flip
Flip image vertically
Parameters:
Returns:
Context -> Context
flop
Flip image horizontally
Parameters:
Returns:
Context -> Context
auto-orient
Auto-orient based on EXIF data
Parameters:
Returns:
Context -> Context
strip
Strip metadata
Parameters:
Returns:
Context -> Context
negate
Negate (invert) colors
Parameters:
Returns:
Context -> Context
normalize
Normalize histogram
Parameters:
Returns:
Context -> Context
auto-level
Auto-level adjustment
Parameters:
Returns:
Context -> Context
auto-gamma
Auto-gamma adjustment
Parameters:
Returns:
Context -> Context
equalize
Equalize histogram
Parameters:
Returns:
Context -> Context
blur
Apply blur
Parameters:
Returns:
NonNegativeFloat -> PositiveFloat -> Context -> Context
gaussian-blur
Apply Gaussian blur
Parameters:
Returns:
NonNegativeFloat -> PositiveFloat -> Context -> Context
sharpen
Sharpen the image
Parameters:
Returns:
NonNegativeFloat -> PositiveFloat -> Context -> Context
edge
Detect edges
Parameters:
Returns:
NonNegativeFloat -> Context -> Context
emboss
Apply emboss effect
Parameters:
Returns:
NonNegativeFloat -> PositiveFloat -> Context -> Context
charcoal
Apply charcoal effect
Parameters:
Returns:
NonNegativeFloat -> PositiveFloat -> Context -> Context
despeckle
Reduce noise (despeckle)
Parameters:
Returns:
Context -> Context
enhance
Enhance image quality
Parameters:
Returns:
Context -> Context
print-info
Print image info (dimensions and depth)
Parameters:
Returns:
Context -> Context
width
Get image width (returns 0 on error)
Parameters:
Returns:
Context -> Int
height
Get image height (returns 0 on error)
Parameters:
Returns:
Context -> Int
depth
Get image depth (returns 0 on error)
Parameters:
Returns:
Context -> Int
is-landscape?
Check if image is landscape
Parameters:
Returns:
Context -> Bool
is-portrait?
Check if image is portrait
Parameters:
Returns:
Context -> Bool
is-square?
Check if image is square
Parameters:
Returns:
Context -> Bool
read
============================================================ High-Level API ============================================================
Read an image from a file.
NonEmptyString -> Result Image ImageMagickError
write
Write an image to a file.
Image -> NonEmptyString -> Result Unit ImageMagickError
free
Free an image and release its resources.
Image -> Unit
clone
Clone an image.
Image -> Result Image ImageMagickError
width
Get image width in pixels.
Image -> Int
height
Get image height in pixels.
Image -> Int
depth
Get image depth in bits.
Image -> Int
resolution-string
Get resolution string "WIDTHxHEIGHT".
Image -> String
print-info
Print image information.
Image -> Unit
resize
Scale image (fast resize).
Image -> PositiveInt -> PositiveInt -> Result Unit ImageMagickError
flip
Flip image vertically.
Image -> Result Unit ImageMagickError
flop
Flip image horizontally.
Image -> Result Unit ImageMagickError
auto-orient
Auto-orient image based on EXIF data.
Image -> Result Unit ImageMagickError
strip
Strip metadata from image.
Image -> Result Unit ImageMagickError
negate
Negate (invert) colors.
Image -> Result Unit ImageMagickError
normalize
Normalize histogram.
Image -> Result Unit ImageMagickError
auto-level
Auto-level adjustment.
Image -> Result Unit ImageMagickError
auto-gamma
Auto-gamma adjustment.
Image -> Result Unit ImageMagickError
equalize
Equalize histogram.
Image -> Result Unit ImageMagickError
blur
Apply blur.
Image -> NonNegativeFloat -> PositiveFloat -> Result Unit ImageMagickError
gaussian-blur
Apply Gaussian blur.
Image -> NonNegativeFloat -> PositiveFloat -> Result Unit ImageMagickError
sharpen
Sharpen the image.
Image -> NonNegativeFloat -> PositiveFloat -> Result Unit ImageMagickError
edge
Detect edges.
Image -> NonNegativeFloat -> Result Unit ImageMagickError
emboss
Apply emboss effect.
Image -> NonNegativeFloat -> PositiveFloat -> Result Unit ImageMagickError
charcoal
Apply charcoal effect.
Image -> NonNegativeFloat -> PositiveFloat -> Result Unit ImageMagickError
despeckle
Reduce noise (despeckle).
Image -> Result Unit ImageMagickError
enhance
Enhance image quality.
Image -> Result Unit ImageMagickError
is-landscape?
Check if image is landscape.
Image -> Bool
is-portrait?
Check if image is portrait.
Image -> Bool
is-square?
Check if image is square.
Image -> Bool