• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

PHP generowanie kodów kreskowych - picqer / php-barcode-generator

Object Storage Arubacloud
0 głosów
150 wizyt
pytanie zadane 5 grudnia 2023 w PHP przez chmod96 Obywatel (1,380 p.)

Cześć Wszystkim,

Mam taki case, chciałbym, aby program generował kody EAN13 (lub inny kod), a następnie zapisywał je do plików JPG.

Korzystam do tego z biblioteki picqer/php-barcode-generator i w sumie działa tak jak chciałem, ale ....

Otrzymuję w pliku JPG tylko i wyłącznie kod EAN, a chciałbym do tego dodać nad lub pod kodem EAN nazwę produktu i żaby to również znajdowało się w pliku JPG.

$generator = new Picqer\Barcode\BarcodeGeneratorJPG();
file_put_contents('barcode.jpg', $generator->getBarcode('081231723897', $generator::TYPE_EAN_13));

Czy ktoś z was wie, jak dodać do generowanego jpg'a tekst?

 

komentarz 5 grudnia 2023 przez Oscar Nałogowiec (29,320 p.)
Ale dlaczego w JPG? To chyba akurat najgorszy format do zapisu takich obrazków.
komentarz 5 grudnia 2023 przez chmod96 Obywatel (1,380 p.)
A jaki proponujesz, co jest lepsze? Daj znać :)
komentarz 5 grudnia 2023 przez Oscar Nałogowiec (29,320 p.)
Taki, który obsługuje obrazy czarno-białe (1 bit per pixel) i ma niestratną kompresję, by nie robić nieostrego obrazu.
komentarz 6 grudnia 2023 przez chmod96 Obywatel (1,380 p.)
Hmmm a więc jaki to format? Niestety aż tak biegły nie jestem:(

1 odpowiedź

0 głosów
odpowiedź 5 grudnia 2023 przez AnimaVillis Stary wyjadacz (11,510 p.)
wybrane 7 grudnia 2023 przez chmod96
 
Najlepsza

Ogólnie samo w sobie nie bardzo w bibliotece, musisz się ogólnie pobawić w php nad generowaniem tego obrazka.

Obrazek został wygenerowany przy pomocy tej biblioteki, którą wskazałeś, trzeba by go troszkę dopracować, ale ogólnie działa.
 

<?php
require 'vendor/autoload.php';

// Sprawdź dostępność GD Library
if (!function_exists('imagecreatefromstring')) {
    die('GD Library nie jest zainstalowana. Zainstaluj GD Library i spróbuj ponownie.');
}

use Picqer\Barcode\BarcodeGeneratorJPG;

// Sprawdź dostępność czcionki
$fontPath = '/Verdana.ttf'; // Ścieżka do pliku z czcionką TrueType

if (!file_exists($fontPath)) {
    die('Czcionka nie jest dostępna w podanej lokalizacji. Sprawdź ścieżkę do pliku z czcionką i spróbuj ponownie.');
}

// Generuj kod kreskowy
$generator = new BarcodeGeneratorJPG();
$barcode = $generator->getBarcode('081231723897', $generator::TYPE_EAN_13);

// Utwórz obiekt obrazu GD z pliku JPG
$im = imagecreatefromstring($barcode);

// Ustaw kolor tekstu na czarny
$color = imagecolorallocate($im, 0, 0, 0);

// Ustaw czcionkę i rozmiar tekstu dla nazwy produktu
$fontSize = 16;

// Ustaw położenie tekstu nazwy produktu
$textX = 10;
$textY = 20;

// Dodaj tekst nazwy produktu
$textProductName = 'Nazwa produktu';

// Ustaw położenie kodu kreskowego
$barcodeX = 10;
$barcodeY = $textY + 30; // Przesunięcie o wysokość tekstu plus 30 px

// Stwórz nowy obrazek zwiększając jego wysokość
$newHeight = $textY + imagesy($im) + 40; // Dodatkowa wysokość 40 px (30 px dla tekstu, 10 px na margines)
$newImage = imagecreatetruecolor(imagesx($im), $newHeight);
imagefill($newImage, 0, 0, imagecolorallocate($newImage, 255, 255, 255)); // Wypełnij białym tłem

// Dodaj tekst nazwy produktu na nowym obrazie
imagettftext($newImage, $fontSize, 0, $textX, $textY, $color, $fontPath, $textProductName);

// Dodaj kod kreskowy na nowym obrazie
imagecopy($newImage, $im, $barcodeX, $barcodeY, 0, 0, imagesx($im), imagesy($im));

// Utwórz unikalną nazwę pliku zgodnie z aktualną godziną
$filename = 'barcode_with_text_' . date('Ymd_His') . '.jpg';

// Zapisz nowy obraz do pliku JPG
imagejpeg($newImage, $filename);

// Zniszcz obiekty obrazu GD
imagedestroy($im);
imagedestroy($newImage);

echo 'Zapisano obrazek jako ' . $filename;
?>

 

komentarz 5 grudnia 2023 przez chmod96 Obywatel (1,380 p.)
Wielkie dzięki!

W wolnej chwili przetestuje to u siebie.

Jedno pytanie nasuwa mi się na ten moment, po co sprawdzać dostępność czcionki?
komentarz 5 grudnia 2023 przez chmod96 Obywatel (1,380 p.)

@AnimaVillis, dodatkowo kod kreskowy przesuwany jest jak by w prawo, przez co go ucina i nie da się go czytać.

komentarz 6 grudnia 2023 przez AnimaVillis Stary wyjadacz (11,510 p.)
Ja sprawdzałem u siebie na serwerze gdzie musiałem podać bezpośrednią ścieżkę, chcesz usuń.

No napisałem Ci wyżej, że działa tylko musisz sobie dopracować.
komentarz 6 grudnia 2023 przez chmod96 Obywatel (1,380 p.)
Ok, dzięki wielkie

Podobne pytania

0 głosów
0 odpowiedzi 105 wizyt
pytanie zadane 14 lipca 2020 w JavaScript przez Wojtek85 Nowicjusz (230 p.)
0 głosów
0 odpowiedzi 273 wizyt
0 głosów
2 odpowiedzi 14,229 wizyt

92,579 zapytań

141,432 odpowiedzi

319,664 komentarzy

61,964 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...