• 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

VPS Starter Arubacloud
0 głosów
239 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,340 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,340 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 (12,530 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 (12,530 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 121 wizyt
pytanie zadane 14 lipca 2020 w JavaScript przez Wojtek85 Nowicjusz (230 p.)
0 głosów
0 odpowiedzi 322 wizyt
0 głosów
2 odpowiedzi 14,404 wizyt

93,018 zapytań

141,985 odpowiedzi

321,274 komentarzy

62,362 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

Wprowadzenie do ITsec, tom 2

Można już zamawiać tom 2 książki "Wprowadzenie do bezpieczeństwa IT" - będzie to około 650 stron wiedzy o ITsec (17 rozdziałów, 14 autorów, kolorowy druk).

Planowana premiera: 30.09.2024, zaś planowana wysyłka nastąpi w drugim tygodniu października 2024.

Warto preorderować, tym bardziej, iż mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy dodatkowe 15% zniżki! Dziękujemy zaprzyjaźnionej ekipie Sekuraka za kod dla naszej Społeczności!

...