bitrix images серые пятня после resize

Home » Bitrix » bitrix images серые пятня после resize
Bitrix, Bitrix наработки Комментариев нет

Фнкция очистки серых пятен после ресайза и завязка этой функции с resizeImageGet

<?require_once($_SERVER['DOCUMENT_ROOT'] . "/bitrix/modules/main/include/prolog_before.php"); AddEventHandler("main", "OnAfterResizeImage", "OnAfterResizeImageHandeler"); function OnAfterResizeImageHandeler($file, $arFields, $callbackData, $cacheImageFile, $cacheImageFileTmp, $arImageSize){ if(is_file($cacheImageFileTmp)){ $arImg = array('src' => $cacheImageFile); $arSize = getimagesize($cacheImageFileTmp); $arImg['width'] = $arSize[0]; $arImg['height'] = $arSize[1]; clearNoiseByImgType3($arImg); } return true; } // Функции очищения изображения от шумов и артефактов function clearNoise3(&$srcImg, $imgWidth, $imgHeight) { $colorWhite = imagecolorallocate($srcImg, 255, 255, 255); for($y=0; $y<($imgHeight); ++$y) { for($x=0; $x<($imgWidth); ++$x) { $colorat=imagecolorat($srcImg, $x, $y); $r = ($colorat >> 16) & 0xFF; $g = ($colorat >> 8) & 0xFF; $b = $colorat & 0xFF; if(($r == 253 && $g == 253 && $b == 253) || ($r == 254 && $g == 254 && $b ==254)) { imagesetpixel($srcImg, $x, $y, $colorWhite); } } } } function clearNoiseByImgType3($imgArr){ $imagePath=$_SERVER["DOCUMENT_ROOT"].$imgArr['src']; $size = getimagesize($imagePath); switch($size["mime"]){ case "image/jpeg": { $im = imagecreatefromjpeg($imagePath); clearNoise3($im, $imgArr['width'], $imgArr['height']); imagejpeg($im,$imagePath,100); echo '<code>'; print_r('changed'); echo '</code>'; } break; case "image/gif": { $im = imagecreatefromgif($imagePath); clearNoise3($im, $imgArr['width'], $imgArr['height']); imagegif($im,$imagePath); } break; case "image/png": { $im = imagecreatefrompng($imagePath); clearNoise3($im, $imgArr['width'], $imgArr['height']); imagepng($im,$imagePath); } break; default: { } break; } } CModule::IncludeModule('iblock'); $arFilter = Array( "IBLOCK_ID" => 11, "PROPERTY_CML2_ARTICLE" => $_GET['art'], ); $resElement = CIBlockElement::GetList(Array("SORT"=>"ASC"), $arFilter); if($arElement = $resElement->GetNext()) { $imagePath = $_SERVER['DOCUMENT_ROOT'].CFile::GetPath($arElement['DETAIL_PICTURE']); for($i=0;$i<100;$i++){ $previewImage2 = CFile::ResizeImageGet( $arElement['DETAIL_PICTURE'], array( 'width'=>163, 'height'=>138 ), BX_RESIZE_IMAGE_PROPORTIONAL_ALT, true ); $src2 = $previewImage2['src']; echo '<img src="'.$src2.'" alt="">'; } } else { CHTTP::SetStatus("404 Not Found"); define('ERROR_404', 'Y'); } ?> <style> body{ margin:0px; } </style>