19 require_once(BASE.
"wcmf/lib/util/class.GraphicsUtil.php");
20 require_once(BASE.
"wcmf/lib/util/class.URIUtil.php");
52 $file = $params[
'src'];
53 $base = $params[
'base'];
54 $default = $params[
'default'];
55 $sizemode = $params[
'sizemode'];
56 $valuemode = $params[
'valuemode'];
58 if (strlen($file) == 0 && strlen($default) == 0) {
63 if (isset($params[
'base']))
67 $file = $urls[
'relative'];
70 $default = $urls[
'relative'];
78 if (!is_file($file)) {
84 $imageSize = getimagesize($file);
85 if ($imageSize ==
false)
91 $requestedWidth = isset($params[
'width']) ? $params[
'width']: null;
92 $requestedHeight = isset($params[
'height']) ? $params[
'height']: null;
95 if ($valuemode ==
'scaleTo' || $valuemode ==
'fitInto')
97 if ($valuemode ==
'fitInto' && $requestedHeight && $requestedHeight > $imageSize[1])
100 $requestedHeight = $imageSize[1];
102 else if ($valuemode ==
'fitInto' && $requestedWidth && $requestedWidth > $imageSize[0])
105 $requestedWidth = $imageSize[0];
107 if ($requestedHeight == null)
110 $requestedHeight = floor(($imageSize[1] * $requestedWidth) / $imageSize[0]);
112 else if ($requestedWidth == null)
115 $requestedWidth = floor(($imageSize[0] * $requestedHeight) / $imageSize[1]);
120 $requestedAspectRatio = $requestedHeight / $requestedWidth;
121 $imageAspectRatio = $imageSize[1] / $imageSize[0];
122 if ($requestedAspectRatio >= $imageAspectRatio) {
124 $requestedHeight = ($imageSize[1] * $requestedWidth) / $imageSize[0];
128 $requestedWidth = ($imageSize[0] * $requestedHeight) / $imageSize[1];
133 if (strlen($sizemode) == 0) {
134 $sizemode =
'resample';
138 if (filesize($file) > 1500000) {
139 $sizemode =
'resize';
142 if (($sizemode !=
'resize') && ($requestedWidth != null || $requestedHeight != null) &&
143 ($requestedWidth < $imageSize[0] || $requestedHeight < $imageSize[1]))
149 preg_match(
'/\.(\w+)$/', $file, $matches);
150 $extension = $matches[1];
152 $destName = $smarty->cache_dir.md5($file.filectime($file).$requestedWidth.$requestedHeight.$sizemode).
'.'.$extension;
155 $dateOrig = fileatime($file);
156 $dateCache = fileatime($destName);
157 if (!file_exists($destName) || $dateOrig > $dateCache)
160 if ($sizemode ==
'resample') {
161 $graphicsUtil->createThumbnail($file, $destName, $requestedWidth, $requestedHeight);
164 $graphicsUtil->cropImage($file, $destName, $requestedWidth, $requestedHeight);
169 if (file_exists($destName)) {
176 if (!isset($params[
'nosizeoutput']) || $params[
'nosizeoutput'] ==
false) {
177 if ($requestedWidth != null) {
178 $widthStr =
' width="'.$requestedWidth.
'"';
180 if ($requestedHeight != null) {
181 $heightStr =
' height="'.$requestedHeight.
'"';
185 echo
'<img src="'.$file.
'"'.$widthStr.$heightStr.
' alt="'.$params[
'alt'].
'" '.$params[
'params'].
'>';
GraphicsUtil provides support for graphic manipulation.
smarty_function_image($params, &$smarty)
translate($rel_uri, $base)