Image.save.phpt 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. <?php
  2. /**
  3. * Test: Nette\Utils\Image save method exceptions.
  4. * @phpExtension gd
  5. */
  6. declare(strict_types=1);
  7. use Nette\Utils\Image;
  8. use Tester\Assert;
  9. require __DIR__ . '/../bootstrap.php';
  10. $main = Image::fromFile(__DIR__ . '/fixtures.images/alpha1.png');
  11. test('', function () use ($main) {
  12. $main->save(getTempDir() . '/foo.png');
  13. Assert::true(is_file(getTempDir() . '/foo.png'));
  14. Assert::same(IMAGETYPE_PNG, getimagesize(getTempDir() . '/foo.png')[2]);
  15. });
  16. test('', function () use ($main) {
  17. $main->save(getTempDir() . '/foo.x', null, Image::PNG);
  18. Assert::true(is_file(getTempDir() . '/foo.x'));
  19. Assert::same(IMAGETYPE_PNG, getimagesize(getTempDir() . '/foo.x')[2]);
  20. });
  21. test('', function () use ($main) {
  22. if (!Image::isTypeSupported(Image::WEBP)) {
  23. return;
  24. }
  25. $main->save(getTempDir() . '/foo.webp');
  26. Assert::true(is_file(getTempDir() . '/foo.webp'));
  27. Assert::same('WEBP', file_get_contents(getTempDir() . '/foo.webp', false, null, 8, 4));
  28. $main->save(getTempDir() . '/foo.y', null, Image::WEBP);
  29. Assert::true(is_file(getTempDir() . '/foo.y'));
  30. Assert::same('WEBP', file_get_contents(getTempDir() . '/foo.y', false, null, 8, 4));
  31. });
  32. test('', function () use ($main) {
  33. if (!Image::isTypeSupported(Image::AVIF)) {
  34. return;
  35. }
  36. $main->save(getTempDir() . '/foo.avif');
  37. Assert::true(is_file(getTempDir() . '/foo.avif'));
  38. Assert::same('avif', file_get_contents(getTempDir() . '/foo.avif', false, null, 8, 4));
  39. $main->save(getTempDir() . '/foo.y', null, Image::AVIF);
  40. Assert::true(is_file(getTempDir() . '/foo.y'));
  41. Assert::same('avif', file_get_contents(getTempDir() . '/foo.y', false, null, 8, 4));
  42. });
  43. test('', function () use ($main) {
  44. if (!function_exists('imagebmp')) {
  45. return;
  46. }
  47. $main->save(getTempDir() . '/foo.bmp');
  48. Assert::true(is_file(getTempDir() . '/foo.bmp'));
  49. Assert::same(IMAGETYPE_BMP, getimagesize(getTempDir() . '/foo.bmp')[2]);
  50. $main->save(getTempDir() . '/foo.y', null, Image::BMP);
  51. Assert::true(is_file(getTempDir() . '/foo.y'));
  52. Assert::same(IMAGETYPE_BMP, getimagesize(getTempDir() . '/foo.y')[2]);
  53. });
  54. Assert::exception(
  55. fn() => $main->save('foo', null, IMG_WBMP),
  56. Nette\InvalidArgumentException::class,
  57. sprintf('Unsupported image type \'%d\'.', IMG_WBMP),
  58. );
  59. Assert::exception(
  60. fn() => $main->save('foo.psd'),
  61. Nette\InvalidArgumentException::class,
  62. 'Unsupported file extension \'psd\'.',
  63. );