Создайте динамическое изображение PNG

Для iOS:

Создать массив:

NSArray *myCGPointArray = @[[NSValue valueWithCGPoint:CGPointMake(30.0, 150.0)],[NSValue valueWithCGPoint:CGPointMake(41.67, 145.19)]];

Получить 1-й объект CGPoint:

CGPoint myPoint = [myCGPointArray[0] CGPointValue];
26
задан user2864740 5 March 2014 в 05:59
поделиться

3 ответа

Это хороший пример , вы можете делать практически все, используя эти функции . Хотя это возможно, создать изображение, подобное тому, которое вы описали, было бы довольно сложно, тем не менее, я сделал несколько странных вещей с градиентами, циклами и цветами.

Если вы хотите создать подобное изображение динамически на основе некоторых параметров, вы всегда можете заранее создайте изображения в фотошопе, а затем наложите их в зависимости от того, что выбирает пользователь.

Вы можете получить массу удовольствия.

Редактировать: О, кстати, если вас интересует неверный параметр показывает часть кода Python , который отвечает за создание изображения и вызывает ошибку. Это было бы хорошее место, чтобы получить некоторое представление о коде.

2nd Edit: Это просто то, что я сделал с помощью такой технологии. Имейте в виду, это было довольно давно. Он принимает имя на основе строки запроса и в основном выполняет несколько циклов с большим количеством случайных чисел.

Вот исходный код, прошу прощения за любой глупый код / ​​цитаты. Это было написано довольно давно, когда мне было около 14 лет, как мне кажется (вероятно, много недостатков).

<?php
header("Content-type:image/jpeg");
$array=array("I am a monument to all your sins", "Currently making pizza","Best before 12/7/09", "Farming Onions");
        function imagettftext_cr(&$im, $size, $angle, $x, $y, $color, $fontfile, $text)
        {
            // retrieve boundingbox
            $bbox = imagettfbbox($size, $angle, $fontfile, $text);
            // calculate deviation
            $dx = ($bbox[2]-$bbox[0])/2.0 - ($bbox[2]-$bbox[4])/2.0;         // deviation left-right
            $dy = ($bbox[3]-$bbox[1])/2.0 + ($bbox[7]-$bbox[1])/2.0;        // deviation top-bottom
            // new pivotpoint
            $px = $x-$dx;
            $py = $y-$dy;
            return imagettftext($im, $size, $angle, $px, $y, $color, $fontfile, $text);
        }
$image = imagecreate(500,90);
$black = imagecolorallocate($image,0,0,0);
$grey_shade = imagecolorallocate($image,40,40,40);
$white = imagecolorallocate($image,255,255,255);


$text = $array[rand(0,sizeof($array)-1)];

// Local font files, relative to script
$otherFont = 'army1.ttf';
$font = 'army.ttf';

if($_GET['name'] == ""){ $name = "Sam152";}else{$name= $_GET['name'];}
$name = substr($name, 0, 25);    


//BG text for Name
while($i<10){
imagettftext_cr($image,rand(2,40),rand(0,50),rand(10,500),rand(0,200),$grey_shade,$font,$name);
$i++;
}
//BG text for saying
while($i<10){
imagettftext_cr($image,rand(0,40),rand(90,180),rand(100,500),rand(200,500),$grey_shade,$otherFont,$text);
$i++;
}

// Main Text
imagettftext_cr($image,35,0,250,46,$white,$font,$name);
imagettftext_cr($image,10,0,250,76,$white,$otherFont,$text);
imagejpeg($image);

?>
22
ответ дан 28 November 2019 в 07:27
поделиться

Вот код, который я использовал раньше для создания изображения с двумя именами, которые принимаются из параметров строки запроса. Я использую подготовленное фоновое изображение и помещаю имена поверх него.

<?php
// Print two names on the picture, which accepted by query string parameters.

$n1 = $_GET['n1'];
$n2 = $_GET['n2'];

Header ("Content-type: image/jpeg");
$image = imageCreateFromJPEG("images/someimage.jpg");
$color = ImageColorAllocate($image, 255, 255, 255);

// Calculate horizontal alignment for the names.
$BoundingBox1 = imagettfbbox(13, 0, 'ITCKRIST.TTF', $n1);
$boyX = ceil((125 - $BoundingBox1[2]) / 2); // lower left X coordinate for text
$BoundingBox2 = imagettfbbox(13, 0, 'ITCKRIST.TTF', $n2);
$girlX = ceil((107 - $BoundingBox2[2]) / 2); // lower left X coordinate for text

// Write names.
imagettftext($image, 13, 0, $boyX+25, 92, $color, 'ITCKRIST.TTF', $n1);
imagettftext($image, 13, 0, $girlX+310, 92, $color, 'ITCKRIST.TTF', $n2);

// Return output.
ImageJPEG($image, NULL, 93);
ImageDestroy($image);
?>

Чтобы отобразить сгенерированное изображение на странице, вы делаете что-то вроде этого:

<img src="myDynamicImage.php?n1=bebe&n2=jake" />
8
ответ дан 28 November 2019 в 07:27
поделиться

Это не прямой ответ на вопрос «делать это в PHP», но вы можете вызвать некоторые мощные программы командной строки из PHP. В частности, ImageMagick отрисовывает все, включая кухонную раковину. Он также имеет то преимущество, что он доступен для «внутренних» скриптов для «внеполосной» обработки (т. Е. Для выполнения обработки изображения после завершения запроса (более быстрая обратная связь с пользователем) или поздно ночью в пакетном режиме, когда ресурсы ограничены во время пиковое время.

4
ответ дан 28 November 2019 в 07:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: