PHP Swatch 下载,只生成 2 种颜色?

Posted

技术标签:

【中文标题】PHP Swatch 下载,只生成 2 种颜色?【英文标题】:PHP Swatch download, only generating 2 colours? 【发布时间】:2014-04-03 16:26:38 【问题描述】:

我一直致力于使用 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 个色板?

【问题讨论】:

【参考方案1】:

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

而不是这个(注意24

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

这个:

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

这样imagefilledrectangle$x2 值会随着您在原始代码中的$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

【讨论】:

@thesarahjay 很高兴听到这个消息;希望您项目的其余部分一切顺利!

以上是关于PHP Swatch 下载,只生成 2 种颜色?的主要内容,如果未能解决你的问题,请参考以下文章

html Miva Swatch颜色标签

使用 PHP 随机生成颜色

转载phpqrcode生成二维码的3种类型步骤

在 PHP 中生成 RGB 渐变颜色的算法

PHP生成二维码的2种方式

如何根据Magento可配置产品中的不同属性集更改产品图像?