Конкретный метод, который вы предлагаете, потерпит неудачу, потому что он использует equals()
, унаследованный от Object
. То есть, он проверял бы, были ли те же Number
объекты одинаковыми, а не были ли их значения одинаковыми.
Если это было просто иллюстративный пример, я обновлю свой ответ.
Ответ полигена на самом деле в значительной степени охватывает почву, к которой я направлялся. Вы также можете быть заинтересованы в этом вопросе: Почему java.lang.Number не реализует Comparable? .
Хорошо, так что все сказано и сделано, в конечном итоге мое решение было просто
$outputLocation = 'output.png';
$mask = new \Imagick('mask.png');
$overlay = new \Imagick('overlay.png');
$overlay->resizeImage(800, 600, \Imagick::FILTER_LANCZOS, 1);
$overlay->compositeImage($mask, \Imagick::COMPOSITE_COPYOPACITY, 0, 0, \Imagick::CHANNEL_ALPHA);
// Significantly reduced image size whilst retaining decent quality
$overlay->posterizeImage(15, false);
$overlay->despeckleImage();
///////////////////////////
$overlay->writeImage($outputLocation);
и выводилось как PNG32
Этот размер сокращения уменьшился с 750 КБ ~ до 124 КБ ~ для тестирования Для целей я использовал яркий красочный цветок, и ниже мой конечный результат: