'Ajax Tiff a PNG', 'summary' => 'Converts tiff image from imagen_tiff field to png and saves in the imagen_web field', 'href' => '', 'version' => 001, 'permanent' => false, 'autoload' => true, 'singular' => true, ); } public function ready(){ $this->addHookBefore('InputfieldFile::fileAdded', $this, 'AjaxConvertTiff', array('priority'=>10)); } function AjaxConvertTiff(HookEvent $event){ $field = $event->object; if($field->name != "imagen_tiff") return; // only for this specific field $pageid = null; $process = $this->wire('process'); $pagefile = $event->argumentsByName("pagefile"); if($pagefile) { $action = 'upload'; $pageid = $pagefile->pagefiles->getPage()->id; $field = $this->wire('fields')->get($field->name); $fieldid = $field->id; }else { $action = 'save'; $pageid = $event->arguments(0)->id; } if(!$pageid) return; //avoids interactions with other modules if(method_exists($this->wire('pages')->get($pageid), 'getForPage')) { $editedPage = $this->wire('pages')->get($pageid)->getForPage(); } elseif($this->wire('input')->get->context == 'PageTable') { $editedPage = $this->wire('pages')->get("FieldtypePageTable=".$process->getPage().", include=all"); } else { $editedPage = $this->wire('pages')->get($pageid); } // Tiff image conversion $tiffImgPath = $pagefile->filename(); $tiffImgName = $pagefile->basename(false); // Save the temp PNG $maxWidth = 1024; $maxHeight = 768; $img = new Imagick($tiffImgPath); // Size calculation $d = $img->getImageGeometry(); $w = min($d['width'], $maxWidth); $h = min($d['height'], $maxHeight); // Image conversion $img->setImageFormat('png'); $img->setCompressionQuality(97); $img->setImageResolution(72, 72); $img->resizeImage($w,$h, Imagick::FILTER_LANCZOS, 1, true); // Save image temp $tempDir = wire()->files->tempDir('tiffpng')->get() . $tiffImgName .'.png'; $img->writeImage($tempDir); // Delete existing images $editedPage->of(false); $editedPage->imagen_web->deleteAll(); // Save new image in imagen_web field $editedPage->imagen_web->add($tempDir); $editedPage->save("imagen_web"); } } ?>