1
0
mirror of https://github.com/Intervention/image.git synced 2025-08-20 12:41:23 +02:00

Optimize code

This commit is contained in:
Oliver Vogel
2025-08-02 10:03:02 +02:00
parent 10570616ca
commit 3e8c3dc795
4 changed files with 25 additions and 4 deletions

View File

@@ -17,6 +17,12 @@ class Profile extends File implements ProfileInterface
*/
public static function fromPath(string $path): self
{
return new self(fopen($path, 'r'));
$pointer = fopen($path, 'r');
if ($pointer === false) {
throw new RuntimeException('Unable to read image profile from path.');
}
return new self($pointer);
}
}

View File

@@ -8,10 +8,12 @@ use GdImage;
use Intervention\Image\Analyzers\PixelColorAnalyzer as GenericPixelColorAnalyzer;
use Intervention\Image\Exceptions\ColorException;
use Intervention\Image\Exceptions\GeometryException;
use Intervention\Image\Exceptions\RuntimeException;
use Intervention\Image\Interfaces\ColorInterface;
use Intervention\Image\Interfaces\ColorspaceInterface;
use Intervention\Image\Interfaces\ImageInterface;
use Intervention\Image\Interfaces\SpecializedInterface;
use ValueError;
class PixelColorAnalyzer extends GenericPixelColorAnalyzer implements SpecializedInterface
{
@@ -31,16 +33,19 @@ class PixelColorAnalyzer extends GenericPixelColorAnalyzer implements Specialize
/**
* @throws GeometryException
* @throws ColorException
* @throws RuntimeException
*/
protected function colorAt(ColorspaceInterface $colorspace, GdImage $gd): ColorInterface
{
$index = @imagecolorat($gd, $this->x, $this->y);
if (!imageistruecolor($gd)) {
$index = imagecolorsforindex($gd, $index);
if ($index === false) {
throw new RuntimeException('Unable to read color at pixel ' . $this->x . ', ' . $this->y . '.');
}
if ($index === false) {
try {
$index = imagecolorsforindex($gd, $index);
} catch (ValueError) {
throw new GeometryException(
'The specified position is not in the valid image area.'
);

View File

@@ -5,6 +5,7 @@ declare(strict_types=1);
namespace Intervention\Image\Drivers\Gd;
use Intervention\Image\Drivers\AbstractFontProcessor;
use Intervention\Image\Exceptions\FontException;
use Intervention\Image\Geometry\Point;
use Intervention\Image\Geometry\Rectangle;
use Intervention\Image\Interfaces\FontInterface;
@@ -44,6 +45,10 @@ class FontProcessor extends AbstractFontProcessor
string: $text
);
if ($box === false) {
throw new FontException('Unable to calculate box size of font.');
}
// build size from points
return new Rectangle(
width: intval(abs($box[6] - $box[4])), // difference of upper-left-x and upper-right-x

View File

@@ -22,6 +22,11 @@ trait CanBuildFilePointer
is_resource($data) && get_resource_type($data) === 'stream' => fn(mixed $data) => $data,
is_string($data) => function (mixed $data) {
$pointer = fopen('php://temp', 'r+');
if ($pointer === false) {
throw new RuntimeException('Unable to build file pointer.');
}
fwrite($pointer, $data);
return $pointer;
},