Почему я получаю сообщение «Не удалось декодировать QR-код: произошла ошибка при обработке некоторых изображений» в PHP Php

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Почему я получаю сообщение «Не удалось декодировать QR-код: произошла ошибка при обработке некоторых изображений» в PHP

Сообщение Anonymous »

Я работаю над PHP-приложением, которое включает декодирование QR-кодов с помощью ImageMagick. Однако в моих журналах я обнаружил следующую ошибку:

Код: Выделить всё

{"logtime":"2024-12-04 14:19:45.955","message":"Processing file: Image_001.jpg","context":[],"level":200,"level_name":"INFO","channel":"local","datetime":{"date":"2024-12-04 14:19:45.955052","timezone_type":3,"timezone":"Asia/Jakarta"},"extra":{"ip":"NB-ANDY","ipserver":"NB-ANDY"}}
{"logtime":"2024-12-04 14:19:48.191","message":"Failed to decode QR code: An error occurred while processing some image(s). This includes bad arguments, I/O errors and image handling errors from ImageMagick.","context":[],"level":400,"level_name":"ERROR","channel":"local","datetime":{"date":"2024-12-04 14:19:48.191321","timezone_type":3,"timezone":"Asia/Jakarta"},"extra":{"ip":"NB-ANDY","ipserver":"NB-ANDY"}}
{"logtime":"2024-12-04 14:19:48.192","message":"QR code not detected for file: Image_001.jpg","context":[],"level":400,"level_name":"ERROR","channel":"local","datetime":{"date":"2024-12-04 14:19:48.192000","timezone_type":3,"timezone":"Asia/Jakarta"},"extra":{"ip":"NB-ANDY","ipserver":"NB-ANDY"}}
Это мой код:

Код: Выделить всё

    private function readQrCode($fileContents)
{
$image = Image::make($fileContents)
->resize(1200, null, function ($constraint) {
$constraint->aspectRatio();
$constraint->upsize();
})
->contrast(15)
->brightness(20)
->sharpen(10);

if (!$image->width() || !$image->height()) {
Log::error("Invalid image: cannot read dimensions.");
return null;
}

$format = $image->mime();
$extension = str_replace('image/', '', $format);

if ($extension === 'jpeg' || $extension === 'jpg') {
$extension = 'jpg';
} elseif ($extension === 'png') {
$extension = 'png';
}

$tempFile = tempnam(sys_get_temp_dir(), 'qr') . '.' . $extension;
file_put_contents($tempFile, $image->encode($extension, 90));

try {
$QRCodeReader = new Zbar($tempFile);
$qrcodeText = $QRCodeReader->scan();
unlink($tempFile);

preg_match('/Contract No\. ?: ?(\d+)/i', $qrcodeText, $leaseMatches);
preg_match('/DocumentTypeId\s*:\s*(\w+)/i', $qrcodeText, $docTypeMatches);
preg_match('/Customer Name\s*:\s*(.+)/i', $qrcodeText, $customerNameMatches);
preg_match('/Document Type\s*:\s*.+\s*-\s*(.+)/i', $qrcodeText, $receiverNameMatches);
preg_match('/Document Type\s*:\s*([^\-]+)/i', $qrcodeText, $docTypeNameMatches);

return [
'lease_no' => $leaseMatches[1] ?? null,
'document_type_id' => $docTypeMatches[1] ?? null,
'document_type_name' => $docTypeNameMatches[1] ?? null,
'customer_name' => $customerNameMatches[1] ?? null,
'receiver_name' => $receiverNameMatches[1] ?? null,
'extension' => $extension,
];
} catch (\Exception $e) {
unlink($tempFile);
Log::error("Failed to decode QR code: " . $e->getMessage());
return null;
}
}
Вот что я пробовал:
  • Убедился, что расширение ImageMagick установлено и включено в моей среде PHP.
  • Проверено, что входные изображения действительны и не повреждены.
  • Проверены права доступа к файлу изображения убедитесь, что он доступен.
Моя среда:
  • Версия PHP: 7.2
  • ImageMagick Версия: ImageMagick 7.1.1-41 Q16 x86. bbdcbf7:20241116 https://imagemagick.org
  • Операционная система: Windows 10, Win32
  • Дополнительные библиотеки: ZBar для чтения QR-кода

    < /ul>
    Что могло бы быть причиной этой ошибки, и как я могу ее отладить или устранить? Это проблема с:
  • конфигурацией ImageMagick?
  • Библиотека QR-кодов (например, ZBar)?

    Входное изображение?
    < /li>
Будем признательны за любые идеи и предложения!


Подробнее здесь: https://stackoverflow.com/questions/792 ... ocessing-s
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»