【问题标题】:Images from Tiles (GD)来自瓷砖的图像 (GD)
【发布时间】:2011-07-13 20:20:45
【问题描述】:

我有 4 个小的 JPEG 图像(40 像素 x 30 像素),我想使用 GD 创建一个瓷砖图像。

两个在顶行,两个在底行。

像这样:

[][]
[][]

如何做到这一点?

【问题讨论】:

标签: php gd


【解决方案1】:

您需要使用的功能是

  • getimagesize - 获取宽度和高度,以便您知道制作最终图像的尺寸,除非您想对其进行硬编码。
  • imagecreate - 为合并的图像创建资源。
  • imagecreatefromjpeg - 将现有图块加载为资源。
  • imagecopy - 将现有图块复制到新的图像资源中,您不需要重新采样功能,因为尺寸/尺寸没有改变。
  • imagejpeg - 保存合并后的图片。

这里有一些未经测试的代码,它们循环遍历图块数组来创建它。它使用常量来表示宽度和高度。

<?php
define('TILE_WIDTH', 40);
define('TILE_HEIGHT', 30);

$tiles = array(
    array('tile1.jpeg', 'tile2.jpeg'),
    array('tile3.jpeg', 'tile4.jpeg'),
);

$saveTo = 'result.jpeg';

$image = imagecreate(TILE_WIDTH * 2, TILE_HEIGHT * 2);
foreach($tiles as $row => $columns) {
    foreach($columns as $col => $filename) {
        $tile = imagecreatefromjpeg($filename);
        imagecopy($image, $tile, $row * TILE_WIDTH, $col * TILE_HEIGHT, 0, 0, TILE_WIDTH, TILE_HEIGHT);
    }
}

imagejpeg($image, $saveTo);

如果你只想显示图像,你不需要将第二个参数传递给 imagejpeg,但你需要将 header content-type 设置为 image/jpeg。

【讨论】:

  • “将现有图像的一部分复制到图块中”。那么如何在现有标题中添加另一张图片呢?
  • 您需要使用imagecopy将imagecreatefromjpeg创建的tile图片资源复制到imagecreate创建的较大的图片资源中。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多