Render.php 636 B

12345678910111213141516171819202122232425262728293031
  1. <?php
  2. namespace smusatov\bzb2u;
  3. use Imagick;
  4. abstract class Render
  5. {
  6. protected Label $label;
  7. public function __construct(Label $label)
  8. {
  9. $this->label = $label;
  10. }
  11. protected function makeJob(Imagick $im): Job{
  12. $job = new Job($this->label);
  13. $iterator = $im->getPixelIterator();
  14. foreach($iterator as $y => $row) {
  15. foreach($row as $x => $pixel) {
  16. $job->setPixel($x +1, $y +1, $pixel->getHSL()['luminosity'] <= 0.45);
  17. }
  18. $iterator->syncIterator();
  19. }
  20. return $job;
  21. }
  22. abstract public function render(): Job;
  23. }