gì tôi cần phải tạo ra một hình ảnh năng động đa màu gradient như dưới đây một:động nhiều màu hình ảnh gradient
tôi cần phải tạo ra nó tự động cho 2/3/4/5/6 màu sắc, bây giờ tôi đang làm việc trên gradient màu 6.
Những gì tôi đã làm cho đến bây giờ là:
$size = 1536;
$thickness = 54;
$im = imagecreatetruecolor($size, $thickness);
$clrCount = count($clr);
$limit = floor($size/$clrCount);
for($i = 0; $i < $limit; $i++) {
// Line 1: red = 255 ; green = 0 -> 255 ; blue = 0
$mycolors[$i] = imagecolorallocate($im, 255, $i, 0);
// Line 2: red = 255 -> 0 ; green = 255 ; blue = 0
$mycolors[$i + $limit] = imagecolorallocate($im, (255 - $i), 255, 0);
// Line 3: red = 0 ; green = 255 ; blue = 0 -> 255
$mycolors[$i + $limit*2] = imagecolorallocate($im, 0, 255, $i);
// Line 4: red = 0 ; green = 255 -> 0 ; blue = 255
$mycolors[$i + $limit*3] = imagecolorallocate($im, 0, (255 - $i), 255);
// Line 5: red = 0 -> 255 ; green = 0 ; blue = 255
$mycolors[$i + $limit*4] = imagecolorallocate($im, $i, 0, 255);
// Line 6: red = 255 ; green = 0 ; blue = 255 -> 0
$mycolors[$i + $limit*5] = imagecolorallocate($im, 255, 0, (255 - $i));
}
for ($i=0; $i < $size; $i++) {
imageline($im, $i, 0, $i, $thickness-1, $mycolors[$i]);
}
imagepng($im);
imagegd($im);
imagedestroy($im);
tôi tạo ra các hình ảnh trên với sự giúp đỡ của this article
Nhưng mã ở đây là sử dụng mã màu tĩnh, khi tôi tryed để thao tác với nó tôi nhận được hình ảnh như dưới đây:
EDITED MÃ
$size = 1536;
$thickness = 54;
$im = imagecreatetruecolor($size, $thickness);
$clrCount = count($clr);
$limit = floor($size/$clrCount);
$clr = array(0 => '4d6eae', 1 => 'e58f0e', 2 => 'ff00ff', 3 => '9900ff', 4 => '9f560a', 5 => '93c47d');
list($r, $g, $b) = sscanf($clr[0], "%02x%02x%02x");
list($r1, $g1, $b1) = sscanf($clr[1], "%02x%02x%02x");
list($r2, $g2, $b2) = sscanf($clr[2], "%02x%02x%02x");
list($r3, $g3, $b3) = sscanf($clr[3], "%02x%02x%02x");
list($r4, $g4, $b4) = sscanf($clr[4], "%02x%02x%02x");
list($r5, $g5, $b5) = sscanf($clr[5], "%02x%02x%02x");
for($i = 0; $i < $limit; $i++) {
// Line 1: red = 255 ; green = 0 -> 255 ; blue = 0
$mycolors[$i] = imagecolorallocate($im, $r, $i, 0);
// Line 2: red = 255 -> 0 ; green = 255 ; blue = 0
$mycolors[$i + $limit] = imagecolorallocate($im, ($r1 - $i), $g1, 0);
// Line 3: red = 0 ; green = 255 ; blue = 0 -> 255
$mycolors[$i + $limit*2] = imagecolorallocate($im, 0, $g2, $i);
// Line 4: red = 0 ; green = 255 -> 0 ; blue = 255
$mycolors[$i + $limit*3] = imagecolorallocate($im, 0, ($g3 - $i), 255);
// Line 5: red = 0 -> 255 ; green = 0 ; blue = 255
$mycolors[$i + $limit*4] = imagecolorallocate($im, $i, 0, $b4);
// Line 6: red = 255 ; green = 0 ; blue = 255 -> 0
$mycolors[$i + $limit*5] = imagecolorallocate($im, $r5, 0, ($b5 - $i));
}
for ($i=0; $i < $size; $i++) {
imageline($im, $i, 0, $i, $thickness-1, $mycolors[$i]);
}
imagepng($im);
imagegd($im);
imagedestroy($im);
Bạn có thể thấy rằng hiệu ứng gradient bị mất, bởi vì tĩnh 255 được thay thế bằng giá trị động được tạo ra số âm và do đó mất đi tác dụng của nó.
Ai cũng có thể giúp tôi tạo hình ảnh có màu động với mã này hoặc có thể giúp cung cấp cho tôi một hướng khác để đạt được loại kết quả đầu ra này với thư viện gd.
CẬP NHẬT
Bây giờ khi tôi đã nhận được câu trả lời cho câu hỏi này, tôi đã là một vấn đề mới liên quan đến câu hỏi này.
phân bổ màu sắc ngẫu nhiên gì tôi muốn đạt được là bây giờ, một chút như thế này dưới đây:
Tôi đang đi với mảng sáu màu như trong trường hợp với các vấn đề trên, cần một số gợi ý để đi.
Có chắc chắn, những gì biết thêm nào bạn yêu cầu? –
Cảm ơn nỗ lực của bạn, bây giờ tôi đã có một số hướng để di chuyển trên :) –
Giá trị bắt đầu của màu sắc, giá trị kết thúc của màu sắc, số lượng các bước, .. :) - Chỉnh sửa: không có vấn đề, đó là một vấn đề thú vị. – Jordumus