Я создаю систему студенческого билета, где у каждого студента будет своя собственная.
Для этого я использую изображение вмешательства, чтобы забрать данные студента и вставить стандартный шаблон удостоверения личности.
Основной код для этого я сделал:
<?php
[...]
$card = Image::make('card_id-model.png');
$card->text('CARD ID', 20, 40, function($font) {
$font->file('arial.ttf');
$font->size(24);
$font->color('#fdf6e3');
$font->align('center');
$font->valign('top');
$font->angle(45);
});
$card->text('NAME: STUDENT\'S NAME', 20, 60, function($font) {
$font->file('arial.ttf');
$font->size(24);
$font->color('#fdf6e3');
$font->align('center');
$font->valign('top');
$font->angle(45);
});
$card->text('CODE: STUDENT\'S CODE', 20, 80, function($font) {
$font->file('arial.ttf');
$font->size(24);
$font->color('#fdf6e3');
$font->align('center');
$font->valign('top');
$font->angle(45);
});
$card->save('card_id - student\'s code.png');
Этот путь медленнее, учитывая, что я буду вызывать функцию каждый раз, когда создаю изображение.
Поэтому я решил сначала создать экземпляр изображения, так как оно будет использоваться для всех идентификаторов карт. Хорошо, но у меня возникают проблемы с применением его в цикле для генерации нескольких одновременно, так как тексты перезаписываются.
<?php
[...]
$card = Image::make('card_id-model.png');
$card->text('CARD ID', 20, 40, function($font) {
$font->file('arial.ttf');
$font->size(24);
$font->color('#fdf6e3');
$font->align('center');
$font->valign('top');
$font->angle(45);
});
for ($students as $student) {
$card->text('NAME: ' . $student->name, 20, 60, function($font) {
$font->file('arial.ttf');
$font->size(24);
$font->color('#fdf6e3');
$font->align('center');
$font->valign('top');
$font->angle(45);
});
$card->text('CODE: ' . $student->code, 20, 80, function($font) {
$font->file('arial.ttf');
$font->size(24);
$font->color('#fdf6e3');
$font->align('center');
$font->valign('top');
$font->angle(45);
});
$card->save('card_id - ' . $student->code . '.png');
}
Это был лучший и самый быстрый способ, который я нашел для массового производства. У кого-нибудь есть советы?