1: <?php
2:
3: /**
4: * @package image
5: *
6: * @author Андрей Загорцев <freeron@ya.ru>
7: * @author Антон Кургузенков <kurguzenkov@list.ru>
8: *
9: * @version 0.01
10: * @since 2012-11-11
11: */
12:
13: require_once 'AcImage.php';
14: require_once 'geometry/exceptions.php';
15:
16: /**
17: * Класс, описывающий изображение в формате png
18: */
19:
20: class AcImagePNG extends AcImage
21: {
22: /**
23: * Проверяет, поддерживается ли формат png
24: *
25: * @return boolean
26: */
27:
28: public static function isSupport()
29: {
30: $gdInfo = parent::getGDinfo();
31: return (bool)$gdInfo['PNG Support'];
32: }
33:
34: /**
35: * @param string путь к файлу с изображением
36: * @throws UnsupportedFormatException
37: */
38:
39: protected function __construct($filePath)
40: {
41: if (!self::isSupport())
42: throw new UnsupportedFormatException('png');
43:
44: parent::__construct($filePath);
45: $path = parent::getFilePath();
46: parent::setResource(@imagecreatefrompng($path));
47: }
48:
49: /**
50: * @param string путь, по которому будет сохранено изображение
51: * @return AcImage
52: */
53:
54: public function save($path)
55: {
56: return parent::saveAsPNG($path);
57: }
58:
59: /**
60: * Возвращяет качество png-изображения
61: * @return int
62: * @throws FileAlreadyExistsException
63: * @throws FileNotSaveException
64: */
65:
66: // png qulity [0, 9] показывает степень сжатия
67: // 0 - лучшее качество (нет сжатия)
68: public static function getQuality()
69: {
70: return 9 - round(parent::getQuality() / 10);
71: }
72: }
73: ?>