p0stal сенк, оказывается регистрировал неправильно
получилось так
[CODE]<?
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']."/");
}
}
?>[/CODE]
функция resizeimg
[CODE]// Функция изменения размера изображения
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;
}[/CODE]