:octocat: convert errors to exceptions in GD output

This commit is contained in:
codemasher
2021-12-10 00:09:22 +01:00
parent 9b54d1d565
commit dd9959b4c2
+13 -2
View File
@@ -15,11 +15,11 @@ namespace chillerlan\QRCode\Output;
use chillerlan\QRCode\Data\QRMatrix;
use chillerlan\QRCode\QRCode;
use chillerlan\Settings\SettingsContainerInterface;
use Exception;
use ErrorException, Exception;
use function array_values, count, extension_loaded, imagecolorallocate, imagecolortransparent, imagecreatetruecolor,
imagedestroy, imagefilledellipse, imagefilledrectangle, imagegif, imagejpeg, imagepng, imagescale, in_array,
is_array, ob_end_clean, ob_get_contents, ob_start, range;
is_array, ob_end_clean, ob_get_contents, ob_start, range, restore_error_handler, set_error_handler;
use const IMG_BICUBIC;
/**
@@ -90,8 +90,15 @@ class QRImage extends QROutputAbstract{
* @return string|resource|\GdImage
*
* @phan-suppress PhanUndeclaredTypeReturnType, PhanTypeMismatchReturn
* @throws \ErrorException
*/
public function dump(string $file = null){
/** @phan-suppress-next-line PhanTypeMismatchArgumentInternal */
set_error_handler(function(int $severity, string $msg, string $file, int $line):void{
throw new ErrorException($msg, 0, $severity, $file, $line);
});
$file ??= $this->options->cachefile;
// we're scaling the image up in order to draw crisp round circles, otherwise they appear square-y on small scales
@@ -126,6 +133,8 @@ class QRImage extends QROutputAbstract{
}
if($this->options->returnResource){
restore_error_handler();
return $this->image;
}
@@ -139,6 +148,8 @@ class QRImage extends QROutputAbstract{
$imageData = $this->base64encode($imageData, 'image/'.$this->options->outputType);
}
restore_error_handler();
return $imageData;
}