Adicionando um GIF a um fundo maior
-
12-12-2019 - |
Pergunta
Estou usando o imagemagick para redimensionar os arquivos enviados, mas enquanto eles estão sendo processados, quero mostrar uma roda gif giratória para o usuário onde a miniatura normalmente estaria.Eu sirvo cerca de 7 tamanhos de polegares e gostaria que a roda permanecesse no tamanho 32x32 no meio, essa é a parte simples.
O que preciso saber é: posso fazer o que foi dito acima mantendo a animação
Exemplo:
Esta imagem:
Começando neste tamanho
Com animação
Solução
existe uma solução em php que eu uso para marcar imagens animadas gif com marca d'água ....ele cria um fundo preto, coloca uma imagem nele e depois coloca marca d'água ...
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);
Outras dicas
Confira este violino, pode conter o que você deseja: http://jsfiddle.net/tgdfb/1/
usa jquery, mas deve ser facilmente adaptável ...
acabou fazendo isso manualmente por Photoshop depois de não poder encontrar uma maneira automatizada de fazer isso através do ImageMagick.Eu encontrei a bandeira 'coalescer', mas não muito mais.