1

我一直在努力使用 PHP 将样本保存为图像,我在这方面取得了先机,到目前为止,它正在保存第一种颜色、最后一种颜色和黑色 - 但迭代三个块的最后一种颜色。

<?php

$colours = $_GET['c'];
$swatches = explode("|", $colours);


// Create image
$im = imagecreatetruecolor(120, 30);


foreach ($swatches as $key => $rgb_set) 
{
if ($rgb_set=="") break;
list($r, $g, $b) = explode(",", $rgb_set);

$x_pos = (24 * $key);

$swatch = imagecolorallocate($im, $r, $g, $b);
imagefilledrectangle($im, $x_pos, 0, 24, 30, $swatch);
}


// Set the content type header
header('Content-Type: image/png');

// Save the image
imagepng($im);
imagedestroy($im);

有谁知道我做错了什么或如何解决这个问题,以便从调色板下载所有 5 个色板?

4

1 回答 1

0

由于函数调用中的硬编码值,该问题似乎(至少部分)发生。24imagefilledrectangle

而不是这个(注意24

imagefilledrectangle($im, $x_pos, 0, 24, 30, $swatch);

这:

imagefilledrectangle($im, $x_pos, 0, $x_pos+24, 30, $swatch);

这样 的$x2值会随着您在原始代码中的值imagefilledrectangle继续移动。$x1

完整代码示例

<?php
$colours = $_GET['c'];
$swatches = explode("|", $colours);

// Create image
$im = imagecreatetruecolor(120, 30);

foreach ($swatches as $key => $rgb_set)
{
    if ($rgb_set == "") break;
    list($r, $g, $b) = explode(",", $rgb_set);

    $x_pos = (24 * $key);

    $swatch = imagecolorallocate($im, $r, $g, $b);
    imagefilledrectangle($im, $x_pos, 0, $x_pos+24, 30, $swatch);
}

// Set the content type header
header('Content-Type: image/png');

// Save the image
imagepng($im);
imagedestroy($im);
?>

注意:这已使用以下 URL 查询字符串进行了测试: ?c=255,255,0|255,155,25|13,103,100|54,123,53|255,0,0

于 2014-04-03T16:43:18.647 回答