Код |
---|
<? function BXIBlockAfterSave($arFields) { $dbr = CIBlockElement::GetByID($arFields['ID']); if(($ar = $dbr->Fetch()) && $ar['DETAIL_PICTURE']>0) { $img_path = $_SERVER['DOCUMENT_ROOT'].CFile::GetPath($ar['DETAIL_PICTURE']); $width = 100; $height = 100; list($width_orig, $height_orig) = getimagesize($img_path); $image_p = imagecreatetruecolor($width, $height); $image = imagecreatefromjpeg($img_path); if ($width_orig>$height_orig) imagecopyresized($image_p, $image, 0, 0, round((max($width_orig,$height_orig)-min($width_orig,$height_orig))/2), 0, $width, $width, min($width_orig,$height_orig), min($width_orig,$height_orig)); if ($width_orig<$height_orig) imagecopyresized($image_p, $image, 0, 0, 0, 0, $width, $width, min($width_orig,$height_orig), min($width_orig,$height_orig)); if ($width_orig==$height_orig) imagecopyresized($image_p, $image, 0, 0, 0, 0, $width, $width, $width_orig, $width_orig); $new_img_path = tempnam("/tmp", "FOO").".jpg"; imagejpeg($image_p, $new_img_path); $be = new CIBlockElement(); $be->Update($arFields['ID'], Array('PREVIEW_PICTURE'=>CFile::MakeFileArray($new_img_path)), false); @unlink($new_img_path); } if($arFields['WF_STATUS_ID']==1) { BXClearCache(true, "/ru/main_page/"); BXClearCache(true, "/ru/detail/".$arFields['ID']."/"); } } ?> |
Код |
---|
// Функция изменения размера изображения function resizeimg($filename, $w, $h) { // определим коэффициент сжатия изображения, которое будем генерить $ratio = $w/$h; // получим размеры исходного изображения $size_img = getimagesize($filename); // Если размеры меньше, то масштабирования не нужно if (($size_img[0]<$w) && ($size_img[1]<$h)) return true; // получим коэффициент сжатия исходного изображения $src_ratio=$size_img[0]/$size_img[1]; // Здесь вычисляем размеры уменьшенной копии, чтобы при масштабировании сохранились // пропорции исходного изображения if ($ratio<$src_ratio) { $h = $w/$src_ratio; } else { $w = $h*$src_ratio; } // создадим пустое изображение по заданным размерам $dest_img = imagecreatetruecolor($w, $h); $white = imagecolorallocate($dest_img, 255, 255, 255); if ($size_img[2]==2) $src_img = imagecreatefromjpeg($filename); else if ($size_img[2]==1) $src_img = imagecreatefromgif($filename); else if ($size_img[2]==3) $src_img = imagecreatefrompng($filename); // масштабируем изображение функцией imagecopyresampled() // $dest_img - уменьшенная копия // $src_img - исходной изображение // $w - ширина уменьшенной копии // $h - высота уменьшенной копии // $size_img[0] - ширина исходного изображения // $size_img[1] - высота исходного изображения imagecopyresampled($dest_img, $src_img, 0, 0, 0, 0, $w, $h, $size_img[0], $size_img[1]); // сохраняем уменьшенную копию в файл if ($size_img[2]==2){ $smallimage = tempnam("/tmp", "FOO").".jpg"; imagejpeg($dest_img, $smallimage); } else if ($size_img[2]==1){ $smallimage = tempnam("/tmp", "FOO").".gif"; imagegif($dest_img, $smallimage); } else if ($size_img[2]==3){ $smallimage = tempnam("/tmp", "FOO").".png"; imagepng($dest_img, $smallimage); } // чистим память от созданных изображений imagedestroy($dest_img); imagedestroy($src_img); return $smallimage; } |
Код |
---|
<? function BXIBlockAfterSave($arFields) { $dbr = CIBlockElement::GetByID($arFields['ID']); if(($ar = $dbr->Fetch()) && $ar['DETAIL_PICTURE']>0) { $img_path = $_SERVER['DOCUMENT_ROOT'].CFile::GetPath($ar['DETAIL_PICTURE']); $width = 100; $height = 100; list($width_orig, $height_orig) = getimagesize($img_path); $image_p = imagecreatetruecolor($width, $height); $image = imagecreatefromjpeg($img_path); if ($width_orig>$height_orig) imagecopyresized($image_p, $image, 0, 0, round((max($width_orig,$height_orig)-min($width_orig,$height_orig))/2), 0, $width, $width, min($width_orig,$height_orig), min($width_orig,$height_orig)); if ($width_orig<$height_orig) imagecopyresized($image_p, $image, 0, 0, 0, 0, $width, $width, min($width_orig,$height_orig), min($width_orig,$height_orig)); if ($width_orig==$height_orig) imagecopyresized($image_p, $image, 0, 0, 0, 0, $width, $width, $width_orig, $width_orig); $new_img_path = tempnam("/tmp", "FOO").".jpg"; imagejpeg($image_p, $new_img_path); $be = new CIBlockElement(); $be->Update($arFields['ID'], Array('PREVIEW_PICTURE'=>CFile::MakeFileArray($new_img_path)), false); @unlink($new_img_path); } if($arFields['WF_STATUS_ID']==1) { BXClearCache(true, "/ru/main_page/"); BXClearCache(true, "/ru/detail/".$arFields['ID']."/"); } } ?> |
Код |
---|
Fatal error: Out of memory (allocated 19398656) (tried to allocate 2272 bytes) in ****/www/bitrix/modules/iblock/classes/general/iblockelement.php on line 1140 |