Crate rofl [] [src]

Lulz on demand!

This here rofl crate, aptly named, is capable of the extraordinary feat of putting text on images. And not just still images: it does cover animated GIFs as well!

In other words, the crate can be used to create memes, which purists generally refer to as image macros.

Much example

extern crate rofl;

let engine = rofl::Engine::new("data/templates", "data/fonts");
let image_macro = rofl::ImageMacro {
    template: "zoidberg".into(),
    captions: vec![
        rofl::Caption::text_at(rofl::VAlign::Top, "Need an example?"),
        rofl::Caption::text_at(rofl::VAlign::Bottom, "Why not Zoidberg?"),
    ],
    ..rofl::ImageMacro::default()
};
let output = engine.caption(image_macro)?;

let mut file = fs::OpenOptions::new().write(true).open("zoidberg.png")?;
file.write_all(&*output)?;

Very concepts

To create memes, you need two types of media resources (in addition to impeccable wit):

  • templates -- named images & animated GIFs that we can put text on
  • fonts to render the text with (like "Impact" or "Comic Sans")

Those resources have to be provided to the captioning Engine.

In the simple above, they are just files contained within some directories. If you're doing something more complicated -- like a website where users can upload their own images -- you can implement your own Loaders for templates or even fonts.

A meme is defined by the ImageMacro structure. These can be deserialized from JSON or query strings if desired.

Wow

Go forth and meme!

Modules

animated_gif

Module handling the decoding & encoding of animated GIFs.

cache

Module implementing a thread-safe LRU cache.

Structs

BytesLoader

Wrapper around FileLoader that loads the entire content of the files.

CachingLoader

A loader that keeps a cache of resources previously loaded.

Caption

Describes a single piece of text rendered on the image macro.

CaptionOutput

Output of the captioning process.

Color

RGB color of the text.

Engine

Image captioning engine.

FileLoader

Loader for files in given directory.

Font

Font that can be used to caption image macros.

FontLoader

Loader for fonts stored in a directory.

HAligns
ImageMacro

Describes an image macro. Used as an input structure.

TemplateLoader

Loader for templates stored in a directory.

VAligns

Enums

CaptionError

Error that may occur during the captioning.

FontError

Error that may occur during font load.

HAlign

Horizontal alignment of text within a rectangle.

Template

Represents an image macro template.

TemplateError

Error that may occur during template load.

VAlign

Vertical alignment of text within a rectangle.

Constants

DEFAULT_COLOR

Default color of the text.

DEFAULT_FONT

Name of the default font.

DEFAULT_HALIGN

Default horizontal alignment of text.

DEFAULT_IMAGE_FORMAT

Default image format to use when encoding image macros.

DEFAULT_OUTLINE_COLOR

Default color of the text outline. This is the inversion of DEFAULT_COLOR.

FONT_FILE_EXTENSION

File extension of font files.

MAX_CAPTION_COUNT

Maximum number of captions an ImageMacro can have.

MAX_CAPTION_LENGTH

Maximum length (in Unicode codepoints) of a single caption text.

MAX_HEIGHT

Maximum height of the result image.

MAX_WIDTH

Maximum width of the result image.

Traits

Loader

Loader of resources from some external source.

Type Definitions

SharingLoader

Type of a loader that doles out shared references to the resources.