<?
class Image {
// Авторесайз пикч
function autoResize($resource, $maxWidth = false, $maxHeight = false) {
if ($maxWidth === false)
$maxWidth = 1920;
if ($maxHeight === false)
$maxHeight = 1080;
if (is_int($resource))
$resource = CFile::GetFileArray($resource);
// Это не изображение
if (!is_array($resource))
return false;
// Шорткат
$i = $resource;
if (($i['HEIGHT'] > $i['WIDTH'] && $maxHeight < $maxWidth) || ($i['WIDTH'] > $i['HEIGHT'] && $maxWidth < $maxHeight)) {
$_ = $maxHeight;
$maxHeight = $maxWidth;
$maxWidth = $_;
}
unset($_);
$r = Array(
'w' => $maxWidth > $i['WIDTH'] ? $i['WIDTH'] : $maxWidth,
'h' => $maxHeight > $i['HEIGHT'] ? $i['HEIGHT'] : $maxHeight
);
$log = Array();
if ($i['HEIGHT'] > $i['WIDTH']) {
$log["if \$i['HEIGHT'] > \$i['WIDTH']"] = true;
if ($i['WIDTH'] > $r['w']) {
$diff = $i['WIDTH'] - $r['w'];
$i['HEIGHT'] -= $diff;
$i['WIDTH'] = $r['w'];
}
if ($i['HEIGHT'] > $r['h']) {
$diff = $i['HEIGHT'] - $r['h'];
$i['WIDTH'] -= $diff;
$i['HEIGHT'] = $r['h'];
}
} else {
if ($i['HEIGHT'] > $r['h']) {
$diff = $i['HEIGHT'] - $r['h'];
$i['WIDTH'] -= $diff;
$i['HEIGHT'] = $r['h'];
}
if ($i['WIDTH'] > $r['w']) {
$diff = $i['WIDTH'] - $r['w'];
$i['HEIGHT'] -= $diff;
$i['WIDTH'] = $r['w'];
}
}
// Log::create([
// 'WIDTH' => $i['WIDTH'],
// 'HEIGHT' => $i['HEIGHT'],
// 'maxHeight' => $maxHeight,
// 'maxWidth' => $maxWidth,
// 'r' => $r,
// 'result' => $log
// ]);
return self::resize($resource, $i['WIDTH'], $i['HEIGHT']);
}
// Шорткат ресайза картинок
public function resize($sourceImage, $targetSizeWidth, $targetSizeHeight, $resizeType = BX_RESIZE_IMAGE_PROPORTIONAL) {
$result = CFile::ResizeImageGet(
$sourceImage, Array('width' => $targetSizeWidth, 'height' => $targetSizeHeight), $resizeType, true
);
$_res = $result['src'] ? $result['src'] : $sourceImage['SRC'];
return $_res;
}
// Шорткат для кропа
public function crop($sourceImage, $targetSizeWidth, $targetSizeHeight) {
$_res = self::resize($sourceImage, $targetSizeWidth, $targetSizeHeight, BX_RESIZE_IMAGE_EXACT);
return $_res;
}
}