98 lines
3.7 KiB
PHP
98 lines
3.7 KiB
PHP
<?php
|
|
|
|
include '../lib/WideImage.php';
|
|
|
|
$img = WideImage::createTrueColorImage(400, 200);
|
|
$canvas = $img->getCanvas();
|
|
$canvas->useFont('fonts/Vera.ttf', 36, $img->allocateColor(255, 0, 0));
|
|
$canvas->writeText('left', 'top', 'abc', 0);
|
|
$canvas->writeText('right', 'top', 'def', 15);
|
|
$canvas->writeText('right', 'bottom', 'ghi', 30);
|
|
$canvas->writeText('left', 'bottom', 'jkl', 45);
|
|
$canvas->writeText('center', 'center', 'mno', 60);
|
|
$img->output('png');
|
|
exit;
|
|
|
|
// Create a 300x150 image
|
|
$im = imagecreatetruecolor(600, 350);
|
|
$black = imagecolorallocate($im, 0, 0, 0);
|
|
$bgcolor = imagecolorallocate($im, 255, 255, 0);
|
|
|
|
// Set the background to be white
|
|
imagefilledrectangle($im, 0, 0, imagesx($im), imagesy($im), $bgcolor);
|
|
|
|
// Path to our font file
|
|
$font = './fonts/Vera.ttf';
|
|
|
|
$angle = 340;
|
|
$font_size = 20;
|
|
$text = 'jW| asdkasdlk alk,.,wedwer|w[r=?';
|
|
$text = '#j';
|
|
|
|
// First we create our bounding box
|
|
$bbox = imageftbbox($font_size, $angle, $font, $text);
|
|
|
|
function normalize_bbox($bbox)
|
|
{
|
|
return [
|
|
'up-left' => ['x' => $bbox[6], 'y' => $bbox[7]],
|
|
'up-right' => ['x' => $bbox[4], 'y' => $bbox[5]],
|
|
'down-left' => ['x' => $bbox[0], 'y' => $bbox[1]],
|
|
'down-right' => ['x' => $bbox[2], 'y' => $bbox[3]],
|
|
];
|
|
}
|
|
|
|
function outer_box($box)
|
|
{
|
|
return [
|
|
'left' => min($box['up-left']['x'], $box['up-right']['x'], $box['down-left']['x'], $box['down-right']['x']),
|
|
'top' => min($box['up-left']['y'], $box['up-right']['y'], $box['down-left']['y'], $box['down-right']['y']),
|
|
'right' => max($box['up-left']['x'], $box['up-right']['x'], $box['down-left']['x'], $box['down-right']['x']),
|
|
'bottom' => max($box['up-left']['y'], $box['up-right']['y'], $box['down-left']['y'], $box['down-right']['y']),
|
|
];
|
|
}
|
|
|
|
$box = normalize_bbox($bbox);
|
|
|
|
// This is our cordinates for X and Y
|
|
//$x = $bbox[0] + (imagesx($im) / 2) - ($bbox[4] / 2) - 5;
|
|
//$y = $bbox[1] + (imagesy($im) / 2) - ($bbox[5] / 2) - 5;
|
|
//$x = 300;
|
|
//$y = 175;
|
|
|
|
$obox = outer_box(normalize_bbox(imageftbbox($font_size, $angle, $font, '')));
|
|
$obox = outer_box(normalize_bbox(imageftbbox($font_size, $angle, $font, $text)));
|
|
|
|
//$x = imagesx($im) - $obox['right'] - 1;
|
|
//$y = imagesy($im) - $obox['bottom'] - 1;
|
|
$x = 0;
|
|
$y = 0;
|
|
|
|
$gc = imagecolorallocate($im, 255, 200, 200);
|
|
imageline($im, imagesx($im) / 2, 0, imagesx($im) / 2, imagesy($im), $gc);
|
|
imageline($im, 0, imagesy($im) / 2, imagesx($im), imagesy($im) / 2, $gc);
|
|
|
|
imagefttext($im, $font_size, $angle, $x, $y, $black, $font, $text);
|
|
//imagefttext($im, $font_size, $angle, $x, $y, $black, $font, 'aj');
|
|
|
|
$c = imagecolorallocate($im, 0, 255, 0);
|
|
imageline($im, $box['up-left']['x'] + $x, $box['up-left']['y'] + $y, $box['up-right']['x'] + $x, $box['up-right']['y'] + $y, $c);
|
|
imageline($im, $box['up-right']['x'] + $x, $box['up-right']['y'] + $y, $box['down-right']['x'] + $x, $box['down-right']['y'] + $y, $c);
|
|
imageline($im, $box['down-right']['x'] + $x, $box['down-right']['y'] + $y, $box['down-left']['x'] + $x, $box['down-left']['y'] + $y, $c);
|
|
imageline($im, $box['down-left']['x'] + $x, $box['down-left']['y'] + $y, $box['up-left']['x'] + $x, $box['up-left']['y'] + $y, $c);
|
|
|
|
$c = imagecolorallocate($im, 0, 127, 255);
|
|
$obox = outer_box($box);
|
|
imageline($im, $obox['left'] + $x, $obox['top'] + $y, $obox['right'] + $x, $obox['top'] + $y, $c);
|
|
imageline($im, $obox['right'] + $x, $obox['top'] + $y, $obox['right'] + $x, $obox['bottom'] + $y, $c);
|
|
imageline($im, $obox['right'] + $x, $obox['bottom'] + $y, $obox['left'] + $x, $obox['bottom'] + $y, $c);
|
|
imageline($im, $obox['left'] + $x, $obox['bottom'] + $y, $obox['left'] + $x, $obox['top'] + $y, $c);
|
|
|
|
imagefilledellipse($im, $x, $y, 3, 3, imagecolorallocate($im, 255, 0, 0));
|
|
|
|
// Output to browser
|
|
header('Content-type: image/png');
|
|
|
|
imagepng($im);
|
|
imagedestroy($im);
|