Created
February 19, 2013 21:23
-
-
Save bennyfactor/4990066 to your computer and use it in GitHub Desktop.
How to framedrop, orient, transparentize, resize, and place one enormous animated gif on on top of another without making photoshop crush your soul/computer. requires p54-imagick (php imagemagick libs)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/php | |
<? | |
// Load the existing image | |
$image = new Imagick(dirname(__FILE__) . '/triangle-optical-illusion-1.gif'); | |
// make animation into filmstrip form | |
$image = $image->coalesceImages(); | |
$new_image = new Imagick(); | |
$i = 1; | |
foreach ($image as $frame) { | |
if ($i % 3 != 0) { | |
// drop every third frame | |
echo $i % 3; | |
//create working frame | |
$clone = $frame->getImage(); | |
//rotate image 90 degrees | |
$clone->rotateImage(new ImagickPixel(), 90); | |
//make background transparent | |
$clone->transparentPaintImage('#000100', 0, 10, false); | |
//make V bigger | |
$clone->resizeImage(480, 480, imagick::FILTER_CATROM, 1); | |
//write working frame to new image | |
$new_image->addImage($clone); | |
//set image disposal method | |
//2 blanks the image before adding the next frame | |
$new_image->setImageDispose(2); | |
} | |
$i++; | |
} | |
//undo coalesce | |
$new_image->deconstructImages(); | |
//write out reoriented, transparentized V for funsies | |
$new_image->writeImages(dirname(__FILE__). '/ball-output.gif', true); | |
//merge images | |
$image2 = new Imagick(dirname(__FILE__). '/keepitlocked-edited.gif'); | |
$image2 = $image2->coalesceImages(); | |
$composite = new Imagick(); | |
$j = 0; | |
foreach ($image2 as $frame2) { | |
$clone2 = $frame2->getImage(); | |
//get the frame of the V analogous to the current KIL frame | |
$new_image->setImageIndex($j); | |
$intermediate =$new_image->getImage(); | |
//paste v at center of keep it locked gif | |
$clone2->compositeImage($intermediate, Imagick::COMPOSITE_DEFAULT, 410, 90); | |
$clone2->flattenImages(); | |
//downsize image to 570 x 320 | |
$clone2->resizeImage(570, 320, imagick::FILTER_CATROM, 1); | |
$composite->addImage($clone2); | |
$composite->setImageDispose(3); | |
echo $j; | |
//belt and suspenders | |
if ($j == 242) { break;} | |
$j++; | |
} | |
//write out final gif | |
$composite->writeImages(dirname(__FILE__). '/output.gif', true); | |
?> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment