This seems to work for me:
<?php
function imageCreateFromAny($filepath) {
$type = exif_imagetype($filepath);
$allowedTypes = array(
1,
2,
3,
6
);
if (!in_array($type, $allowedTypes)) {
return false;
}
switch ($type) {
case 1 :
$im = imageCreateFromGif($filepath);
break;
case 2 :
$im = imageCreateFromJpeg($filepath);
break;
case 3 :
$im = imageCreateFromPng($filepath);
break;
case 6 :
$im = imageCreateFromBmp($filepath);
break;
}
return $im;
}
$filter_r=255;
$filter_g=0;
$filter_b=0;
$suffixe="-red";
$path="original-source/image.jpg";
if(is_file($path)){
$image=imageCreateFromAny($path);
$filter_r_opp = 255 - $filter_r;
$filter_g_opp = 255 - $filter_g;
$filter_b_opp = 255 - $filter_b;
imagefilter($image, IMG_FILTER_NEGATE);
imagefilter($image, IMG_FILTER_COLORIZE, $filter_r_opp, $filter_g_opp, $filter_b_opp);
imagefilter($image, IMG_FILTER_NEGATE);
$new_path=substr($path,0,strlen($path)-4).$suffixe.".jpg";
imagejpeg($image,$new_path);
imagedestroy($image);
echo 'Red shading success.';
}
else {
echo 'Red shading failed.';
}
?>
source
share