将gif添加到更大的背景中

时间:2012-10-02 08:31:38

标签: imagemagick imagemagick-convert

我正在使用imagemagick来调整上传文件的大小,但是当他们正在处理时我想向缩略图通常所在的用户显示旋转的gif轮。我提供大约7种尺寸的拇指,并希望轮子在中间保持32x32尺寸,这就是简单的一点。

我需要知道的是,我是否可以在保留动画的同时完成上述操作

示例:

此图片: This Image

从这个尺寸开始 This Size

使用动画

3 个答案:

答案 0 :(得分:1)

看看这个小提琴,它可能包含你想要的东西:http://jsfiddle.net/TGdFB/1/

它使用jQuery,但应该很容易适应......

答案 1 :(得分:1)

在无法通过imagemagick找到自动执行此操作的方法后,由Photoshop手动完成此操作。我找到了'coalesce'标志,但没有其他。

答案 2 :(得分:0)

有一个解决方案在php巫婆我使用水印gif动画图像.... 它创造了一个黑色的免费图像,然后放上水印...

watermarkpath = 'path to wathermarkimage.jpg|gif|png';
$imagepath= 'path to the image';     
$watermark = new Imagick($watermarkpath);
 $GIF = new Imagick();
 $GIF->setFormat("gif");

$animation = new Imagick($imagepath);
foreach ($animation as $frame) {

    $iWidth = $frame->getImageWidth();
    $iHeight = $frame->getImageHeight();
    $wWidth = $watermark->getImageWidth();
    $wHeight = $watermark->getImageHeight();

    if ($iHeight < $wHeight || $iWidth < $wWidth) {
        // resize the watermark
        $watermark->scaleImage($iWidth, $iHeight);

        // get new size
        $wWidth = $watermark->getImageWidth();
        $wHeight = $watermark->getImageHeight();
    }

    $bgframe = new Imagick();
    $bgframe->newImage(($iWidth), ($iHeight + 80), new ImagickPixel('Black'));
    $bgframe->setImageDelay($frame->getImageDelay());


    $x = ($iWidth) - $wWidth - 5;
    $y = ($iHeight + 80) - $wHeight - 5;


    $bgframe->compositeImage($frame, imagick::COMPOSITE_DEFAULT, 0, 0);
     $bgframe->flattenImages();
    $bgframe->compositeImage($watermark, imagick::COMPOSITE_OVER, $x, $y);
     $bgframe->flattenImages();
    $GIF->addImage($bgframe);
}



$GIF->writeimages($imagepath,true);