0

所以,我需要将一些图像( 36 或 48 )图像合并到另一个图像(在此处输入图像描述);

其分辨率为 4800x4800 像素。所以每个方格将有 695x695;我目前想出了这个解决方案:

$i = 1;
        $x = 140; $y = 140;
        foreach($files as $file):
            if($i > 1) $template = 'test.png'; 
            else $template = 'templates/24x24-TEMPLATE.png';
            $this->save_image($file,'templates/temp.jpg');
            $src = imagecreatefromjpeg('templates/temp.jpg');
            $src2 = imagecreatetruecolor(695,695);
            imagecopyresampled($src2, $src, 0, 0, 0, 0, 695, 695, 612, 612);
            imagejpeg($src2,'templates/temp.jpg');
            imagedestroy($src2);
            $src = imagecreatefromjpeg('templates/temp.jpg');
            $dest = imagecreatefrompng($template);
            imagealphablending($dest, false);
            imagesavealpha($dest, true);
            imagealphablending($src, false);
            imagesavealpha($src, true);
            imagecopymerge($dest, $src, $x, $y, 0, 0, 695, 695, 100); //have to play with these numbers for it to work for you, etc.
            imagepng($dest,'test.png');
            /* Destroy the images to free up space */
            imagedestroy($dest);
            imagedestroy($src);
            $x = $x + 695 + 65;
            if($i % 6 == 0):
                $y = $y + 695 + 65;
                $x = 140;
            endif;
            $i++;
        endforeach;

女巫下载要放在方块上的文件,将其与方块合并,并对所有图像执行此操作,直到所有方块都被填满。但是该代码,对于 20 张图像,最多需要 5 分钟!我需要一些可以在 30 秒内运行的东西来用图像填充正方形,然后生成单个文件 PDF。

有没有办法改善这一点?或者有没有其他方法可以更快更好地做到这一点?

4

1 回答 1

1

我认为“在一个好时机”你的意思是快速有效。

那么答案可能是在 PHP 之外进行。即使数据大部分保存在使用 GD 扩展的自定义数据结构中,PHP 代码中仍然存在大量开销。有很多工具可以合并图像以生成 CSS 精灵——但它们并不都提供对图像布局的控制。您可以使用 GD 和 C 编写自己的代码。

但是为什么要打扰呢?如果您最终希望输出为 PDF,为什么不直接将单个图像写入 PDF?

于 2013-02-21T10:55:46.427 回答