/** * @param string $content * @param bool $compress * @return string */ private function _compileLess($content, $compress) { $render = $this->_render; $lessCompiler = new lessc(); $lessCompiler->registerFunction('image', function ($arg) use($render) { /** @var CM_Frontend_Render $render */ list($type, $delimiter, $values) = $arg; return array('function', 'url', array('string', $delimiter, array($render->getUrlResource('layout', 'img/' . $values[0])))); }); $lessCompiler->registerFunction('image-inline', function ($arg) use($render) { /** @var CM_Frontend_Render $render */ list($type, $delimiter, $values) = $arg; if (2 == sizeof($values) && is_array($values[0]) && is_array($values[1])) { $delimiter = (string) $values[0][1]; $path = (string) $values[0][2][0]; $size = (int) $values[1][1]; } else { $path = $values[0]; $size = 0; } $imagePath = $render->getLayoutPath('resource/img/' . $path, null, null, true, true); $cache = CM_Cache_Persistent::getInstance(); $imageBase64 = $cache->get($cache->key(__METHOD__, md5($imagePath), 'size:' . $size), function () use($imagePath, $size) { $file = new CM_File($imagePath); $img = new CM_Image_Image($file->read()); if ($size > 0) { $img->resize($size, $size); } $img->setFormat(CM_Image_Image::FORMAT_GIF); return base64_encode($img->getBlob()); }); $url = 'data:image/gif;base64,' . $imageBase64; return array('function', 'url', array('string', $delimiter, array($url))); }); $lessCompiler->registerFunction('urlFont', function ($arg) use($render) { /** @var CM_Frontend_Render $render */ list($type, $delimiter, $values) = $arg; return array($type, $delimiter, array($render->getUrlStatic('/font/' . $values[0]))); }); if ($compress) { $lessCompiler->setFormatter('compressed'); } return $lessCompiler->compile($content); }
public function testResizeSpecificKeepExif() { $imageFileOriginal = new CM_File(DIR_TEST_DATA . 'img/test-rotated.jpg'); $image = new CM_Image_Image($imageFileOriginal->read()); $image->resize($image->getWidth(), $image->getHeight()); $imageFile = CM_File::createTmp(null, $image->getBlob()); $newImage = new CM_Image_Image($imageFile->read()); $this->assertSame(6, $this->_getImagickObject($newImage)->getImageOrientation()); }