Center that shit
This commit is contained in:
parent
c222ab3b4d
commit
e58a7bcd94
48
generate.php
48
generate.php
@ -15,6 +15,7 @@ $validFiles = [
|
|||||||
'positions' => [
|
'positions' => [
|
||||||
'top' => ['x' => 125, 'y' => 270, 'maxWidth' => 262],
|
'top' => ['x' => 125, 'y' => 270, 'maxWidth' => 262],
|
||||||
'bottom' => ['x' => 150, 'y' => 350, 'maxWidth' => 216],
|
'bottom' => ['x' => 150, 'y' => 350, 'maxWidth' => 216],
|
||||||
|
'bottomSecond' => ['x' => 150, 'y' => 400, 'maxWidth' => 216],
|
||||||
],
|
],
|
||||||
],
|
],
|
||||||
];
|
];
|
||||||
@ -22,6 +23,7 @@ $validFiles = [
|
|||||||
$template = $_GET['template'] ?? '';
|
$template = $_GET['template'] ?? '';
|
||||||
$topText = $_GET['top'] ?? '';
|
$topText = $_GET['top'] ?? '';
|
||||||
$bottomText = $_GET['bottom'] ?? '';
|
$bottomText = $_GET['bottom'] ?? '';
|
||||||
|
$bottomSecondText = $_GET['bottomSecond'] ?? '';
|
||||||
|
|
||||||
if (!isset($validFiles[$template]) || !file_exists(sprintf('%s/%s', $templatesDirectory, $template))) {
|
if (!isset($validFiles[$template]) || !file_exists(sprintf('%s/%s', $templatesDirectory, $template))) {
|
||||||
die('Invalid template');
|
die('Invalid template');
|
||||||
@ -31,23 +33,65 @@ if (empty($topText) || empty($bottomText)) {
|
|||||||
die('Invalid text');
|
die('Invalid text');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get centered X coordinate
|
||||||
|
*
|
||||||
|
* @param int $originalX
|
||||||
|
* @param int $maxWidth
|
||||||
|
* @param Imagine\Image\BoxInterface $textBox
|
||||||
|
*
|
||||||
|
* @return int
|
||||||
|
*/
|
||||||
|
function getXCoord($originalX, $maxWidth, $textBox)
|
||||||
|
{
|
||||||
|
$result = $originalX + ($maxWidth - $textBox->getWidth()) / 2;
|
||||||
|
|
||||||
|
if ($result < 1) {
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
return (int) $result;
|
||||||
|
}
|
||||||
|
|
||||||
$templateFile = sprintf('%s/%s', $templatesDirectory, $template);
|
$templateFile = sprintf('%s/%s', $templatesDirectory, $template);
|
||||||
$positions = $validFiles[$template]['positions'];
|
$positions = $validFiles[$template]['positions'];
|
||||||
$imagine = new Imagine();
|
$imagine = new Imagine();
|
||||||
|
|
||||||
$palette = new RGB();
|
$palette = new RGB();
|
||||||
$colorBlack = $palette->color('#000000', 100);
|
$colorBlack = $palette->color('#000000', 100);
|
||||||
|
$transparent = $palette->color('#FFFFFF', 0);
|
||||||
|
|
||||||
$image = $imagine->open($templateFile);
|
$image = $imagine->open($templateFile);
|
||||||
|
|
||||||
$font = new Font($_ENV['FONT_LOCATION'], 12, $colorBlack);
|
$font = new Font($_ENV['FONT_LOCATION'], 12, $colorBlack);
|
||||||
|
$transparentFont = new Font($_ENV['FONT_LOCATION'], 0, $transparent);
|
||||||
|
|
||||||
$top = $positions['top'];
|
$top = $positions['top'];
|
||||||
$bottom = $positions['bottom'];
|
$bottom = $positions['bottom'];
|
||||||
$topPosition = new Point($top['x'], $top['y']);
|
$bottomSecond = $positions['bottomSecond'];
|
||||||
$bottomPosition = new Point($bottom['x'], $bottom['y']);
|
|
||||||
|
$topBox = $font->box($topText);
|
||||||
|
$topX = getXCoord($top['x'], $top['maxWidth'], $topBox);
|
||||||
|
$topY = $top['y'];
|
||||||
|
|
||||||
|
$bottomBox = $font->box($bottomText);
|
||||||
|
$bottomX = getXCoord($bottom['x'], $bottom['maxWidth'], $bottomBox);
|
||||||
|
$bottomY = $bottom['y'];
|
||||||
|
|
||||||
|
$bottomSecondBox = $transparentFont->box('placeholder');
|
||||||
|
if (!empty($bottomSecondText)) {
|
||||||
|
$bottomSecondBox = $font->box($bottomSecondText);
|
||||||
|
}
|
||||||
|
|
||||||
|
$bottomSecondX = getXCoord($bottomSecond['x'], $bottomSecond['maxWidth'], $bottomSecondBox);
|
||||||
|
$bottomSecondY = $bottomSecond['y'];
|
||||||
|
|
||||||
|
$topPosition = new Point($topX, $topY);
|
||||||
|
$bottomPosition = new Point($bottomX, $bottomY);
|
||||||
|
$bottomSecondPosition = new Point($bottomSecondX, $bottomSecondY);
|
||||||
|
|
||||||
$image->draw()->text($topText, $font, $topPosition, 0, $top['maxWidth'] ?? null);
|
$image->draw()->text($topText, $font, $topPosition, 0, $top['maxWidth'] ?? null);
|
||||||
$image->draw()->text($bottomText, $font, $bottomPosition, 0, $bottom['maxWidth'] ?? null);
|
$image->draw()->text($bottomText, $font, $bottomPosition, 0, $bottom['maxWidth'] ?? null);
|
||||||
|
$image->draw()->text($bottomSecondText, $font, $bottomSecondPosition, 0, $bottomSecond['maxWidth'] ?? null);
|
||||||
|
|
||||||
$image->show('png');
|
$image->show('png');
|
||||||
|
@ -25,6 +25,9 @@
|
|||||||
<label for="bottom">gRUnNLAG:</label>
|
<label for="bottom">gRUnNLAG:</label>
|
||||||
<input type="text" name="bottom" placeholder="Text">
|
<input type="text" name="bottom" placeholder="Text">
|
||||||
|
|
||||||
|
<label for="bottomSecond">gRUnNLAG #2 (Valgfritt):</label>
|
||||||
|
<input type="text" name="bottomSecond" placeholder="Text">
|
||||||
|
|
||||||
<button type="submit" id="submit">Generate</button>
|
<button type="submit" id="submit">Generate</button>
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
@ -49,6 +52,7 @@
|
|||||||
url.searchParams.set('template', form.elements.template.value);
|
url.searchParams.set('template', form.elements.template.value);
|
||||||
url.searchParams.set('top', form.elements.top.value);
|
url.searchParams.set('top', form.elements.top.value);
|
||||||
url.searchParams.set('bottom', form.elements.bottom.value);
|
url.searchParams.set('bottom', form.elements.bottom.value);
|
||||||
|
url.searchParams.set('bottomSecond', form.elements.bottomSecond.value);
|
||||||
|
|
||||||
preview.src = url.href;
|
preview.src = url.href;
|
||||||
preview.classList.remove('hidden');
|
preview.classList.remove('hidden');
|
||||||
|
Loading…
Reference in New Issue
Block a user