mirror of
https://github.com/PHPOffice/PhpSpreadsheet.git
synced 2026-08-31 04:28:51 +00:00
97 lines
3.6 KiB
PHP
97 lines
3.6 KiB
PHP
<?php
|
|
|
|
namespace PhpOffice\PhpSpreadsheetTests\Worksheet;
|
|
|
|
use GdImage;
|
|
use PhpOffice\PhpSpreadsheet\Exception;
|
|
use PhpOffice\PhpSpreadsheet\Worksheet\MemoryDrawing;
|
|
use PHPUnit\Framework\TestCase;
|
|
|
|
class MemoryDrawingTest extends TestCase
|
|
{
|
|
public function testMemoryDrawing(): void
|
|
{
|
|
$name = 'In-Memory image';
|
|
$gdImage = @imagecreatetruecolor(120, 20);
|
|
if ($gdImage === false) {
|
|
self::markTestSkipped('Unable to create GD Image for MemoryDrawing');
|
|
}
|
|
|
|
$textColor = (int) imagecolorallocate($gdImage, 255, 255, 255);
|
|
imagestring($gdImage, 1, 5, 5, 'Created with PhpSpreadsheet', $textColor);
|
|
|
|
$drawing = new MemoryDrawing();
|
|
$drawing->setName($name);
|
|
$drawing->setDescription('In-Memory image 1');
|
|
$drawing->setCoordinates('A1');
|
|
$drawing->setImageResource($gdImage);
|
|
$drawing->setRenderingFunction(MemoryDrawing::RENDERING_PNG);
|
|
$drawing->setMimeType(MemoryDrawing::MIMETYPE_PNG);
|
|
|
|
if (version_compare(PHP_VERSION, '8.0.0', '>=') === true) {
|
|
self::assertIsObject($drawing->getImageResource());
|
|
/** @phpstan-ignore-next-line */
|
|
self::assertInstanceOf(GdImage::class, $drawing->getImageResource());
|
|
} else {
|
|
self::assertIsResource($drawing->getImageResource());
|
|
}
|
|
|
|
self::assertSame(MemoryDrawing::MIMETYPE_DEFAULT, $drawing->getMimeType());
|
|
self::assertSame(MemoryDrawing::RENDERING_DEFAULT, $drawing->getRenderingFunction());
|
|
}
|
|
|
|
public function testMemoryDrawingFromString(): void
|
|
{
|
|
$imageFile = __DIR__ . '/../../data/Worksheet/officelogo.jpg';
|
|
|
|
$imageString = file_get_contents($imageFile);
|
|
if ($imageString === false) {
|
|
self::markTestSkipped('Unable to read Image file for MemoryDrawing');
|
|
}
|
|
$drawing = MemoryDrawing::fromString($imageString);
|
|
|
|
if (version_compare(PHP_VERSION, '8.0.0', '>=') === true) {
|
|
self::assertIsObject($drawing->getImageResource());
|
|
/** @phpstan-ignore-next-line */
|
|
self::assertInstanceOf(GdImage::class, $drawing->getImageResource());
|
|
} else {
|
|
self::assertIsResource($drawing->getImageResource());
|
|
}
|
|
|
|
self::assertSame(MemoryDrawing::MIMETYPE_JPEG, $drawing->getMimeType());
|
|
self::assertSame(MemoryDrawing::RENDERING_JPEG, $drawing->getRenderingFunction());
|
|
}
|
|
|
|
public function testMemoryDrawingFromInvalidString(): void
|
|
{
|
|
$this->expectException(Exception::class);
|
|
$this->expectExceptionMessage('Value cannot be converted to an image');
|
|
|
|
$imageString = 'I am not an image';
|
|
MemoryDrawing::fromString($imageString);
|
|
}
|
|
|
|
public function testMemoryDrawingFromStream(): void
|
|
{
|
|
$imageFile = __DIR__ . '/../../data/Worksheet/officelogo.jpg';
|
|
|
|
$imageStream = fopen($imageFile, 'rb');
|
|
if ($imageStream === false) {
|
|
self::markTestSkipped('Unable to read Image file for MemoryDrawing');
|
|
}
|
|
$drawing = MemoryDrawing::fromStream($imageStream);
|
|
fclose($imageStream);
|
|
|
|
if (version_compare(PHP_VERSION, '8.0.0', '>=') === true) {
|
|
self::assertIsObject($drawing->getImageResource());
|
|
/** @phpstan-ignore-next-line */
|
|
self::assertInstanceOf(GdImage::class, $drawing->getImageResource());
|
|
} else {
|
|
self::assertIsResource($drawing->getImageResource());
|
|
}
|
|
|
|
self::assertSame(MemoryDrawing::MIMETYPE_JPEG, $drawing->getMimeType());
|
|
self::assertSame(MemoryDrawing::RENDERING_JPEG, $drawing->getRenderingFunction());
|
|
}
|
|
}
|