Skip to content

Instantly share code, notes, and snippets.

View shunn's full-sized avatar

Bill Shunn shunn

View GitHub Profile
@shunn
shunn / nametag.pl
Created June 19, 2019 14:11
Name Tag Generator
#!/usr/bin/perl
use strict;
use Image::Magick;
# Input and output files
my $sourcefile = 'image-magick-step-1.jpg'; # blank name tag image (input filename)
my $texturefile = 'image-magick-step-2.jpg'; # pebbled texture image (input filename)
my $targetfile = 'image-magick-step-6.jpg'; # final composite image (output filename)
# Text values
@shunn
shunn / nametag8.pl
Last active June 19, 2019 14:17
Name Tag Generator Part 8
# Layer our textured shadow onto the blank name tag, using our mask layer as a stencil
$nametag->Composite(
image => $texture,
mask => $mask,
);
# Write the resulting image to a file
$nametag->Write($targetfile);
@shunn
shunn / nametag7.pl
Created June 19, 2019 14:04
Name Tag Generator Part 7
# Layer our blurred shadow onto our texture image
$texture->Composite(
image => $shadow,
compose => 'Dissolve',
opacity => $opacity,
);
@shunn
shunn / nametag6.pl
Created June 19, 2019 14:00
Name Tag Generator Part 6
# Create our shadow image
my $shadow = Image::Magick->new;
$shadow->Set( size => '503x339' );
$shadow->ReadImage( 'canvas:black' );
$shadow->Annotate(
font => $font,
pointsize => $size,
fill => 'white',
text => $name,
x => $x + $offsetx,
@shunn
shunn / nametag5.pl
Created June 19, 2019 13:58
Name Tag Generator Part 5
# Create a mask (or stencil) image using the desired text
my $mask = Image::Magick->new; # Create a new image object
$mask->Set( size => '503x339' ); # Same size as blank name tag image
$mask->ReadImage( 'canvas:black' ); # Fill the image with black
$mask->Annotate( # Render the text on the image in white
font => $font,
pointsize => $size,
fill => 'white',
text => $name,
x => $x,
@shunn
shunn / nametag4.pl
Created June 19, 2019 13:55
Name Tag Generator Part 4
# Position text so it's centered on the name tag
my $x = $startx - int($width / 2);
my $y = $starty;
@shunn
shunn / nametag3.pl
Last active June 19, 2019 13:45
Name Tag Generator Part 3
# Get dimensions of rendered text
my ($x_ppem, $y_ppem, $ascender, $descender, $width, $height, $max_advance) =
$nametag->QueryFontMetrics(
font => $font,
pointsize => $size,
text => $name,
);
@shunn
shunn / nametag2.pl
Last active June 19, 2019 13:47
Name Tag Generator Part 2
# Load image files for compositing
my $nametag = Image::Magick->new;
my $texture = Image::Magick->new;
$nametag->Read($sourcefile);
$texture->Read($texturefile);
@shunn
shunn / nametag1.pl
Last active June 19, 2019 13:54
Name Tag Generator Part 1
#!/usr/bin/perl
use strict;
use Image::Magick;
# Input and output files
my $sourcefile = 'image-magick-step-1.jpg'; # blank name tag image (input filename)
my $texturefile = 'image-magick-step-2.jpg'; # pebbled texture image (input filename)
my $targetfile = 'image-magick-step-6.jpg'; # final composite image (output filename)
# Text values