Я хочу сгенерировать изображение с помощью библиотеки php gd, но у меня есть некоторые ошибки, иногда это работает, иногда это не так. Полное изображение не генерируется, только частично. Иногда в диагоналях.PHP GD библиотека, как сгенерировать матрицу с изображением пикселя из массива цветов
У меня есть строка типа «color_color_color» и т. Д., Которые я преобразовываю в массив, чтобы создать матрицу пикселей. Затем я разбираю массив с циклом и создаю изображение с заданным цветом пикселей. Затем я генерирую прозрачный цвет, сохраняя в png.
Иногда это работает, но первая строка и первый столбец не генерируются.
<?php
//tell at the browser that is a picture
header("Content-Type: image/png");
$size = $_POST['size'];
//size of the picture
$image = imagecreatetruecolor($size, $size);
//color background example : "grayOne_black_grayOne_white_" ect...
$first_array = explode("_", $_POST['field']);
$white = imagecolorallocate($image, 255, 255, 255);
$grayOne = imagecolorallocate($image, 225, 225, 225);
$grayTwo = imagecolorallocate($image, 200, 200, 200);
$grayThree = imagecolorallocate($image, 175, 175, 175);
$grayFour = imagecolorallocate($image, 150, 150,150);
$grayFive = imagecolorallocate($image, 125, 125, 125);
$graySix = imagecolorallocate($image, 100, 100, 100);
$graySeven = imagecolorallocate($image, 75, 75, 75);
$grayHeight = imagecolorallocate($image, 50, 50, 50);
$grayNine = imagecolorallocate($image, 25, 25, 25);
$black = imagecolorallocate($image, 0, 0, 0);
// a variable to parse the array
$a = 0;
// a loop ImageSetPixel($image, $y, $x, $color);
for($x = 0; $x < $size; $x++){
for($y = 0; $y < $size; $y++){
switch($first_array[$a]){
case "white" : $color = $white;
break;
case "grayOne" : $color = $grayOne;
break;
case "grayTwo" : $color = $grayTwo;
break;
case "grayThree" : $color = $grayThree;
break;
case "grayFour" : $color = $grayFour;
break;
case "grayFive" : $color = $grayFive;
break;
case "graySix" : $color = $graySix;
break;
case "graySeven" : $color = $graySeven;
break;
case "grayHeight" : $color = $grayHeight;
break;
case "grayNine" : $color = $grayNine;
break;
case "black" : $color = $black ;
break;
}
$a++;
ImageSetPixel($image, $y, $x, $color);
}
}
//set black as transparent
ImageColorTransparent($image, $black);
//save the picture with a number
ImagePng($image, "../image/pictureb".$_POST['numb'].".png");
imagedestroy($image);
?>
ARE YOU мало памяти при создании этого образа? У меня проблемы с памятью при создании QR-кодов с различными цветами. Возможно, попробуйте уменьшить свои цвета до двух, просто для тестирования и посмотрите, не изменилось ли это. – pokeybit
Если это http://stackoverflow.com/a/430516/2311317 – pokeybit
спасибо, я попробую это, и тоже для исправления. –