function savePostImage($post_id, $file_url) { global $blog_settings; //echo "<br/>saving image ..." . $file_url. " ----"; if ($file_url != '') { $post_icon_folder = 'data/images'; $folder = dirname(__FILE__) . '/../' . $post_icon_folder; // check destination folder if (!is_dir($folder)) { print T_('The folder data/images does not exists !'); return ''; } if (!is_writable($folder)) { print T_('The folder data/images must writable !'); return ''; } $tmp_folder = dirname(__FILE__) . '/../data/tmp'; // check destination folder if (!is_dir($tmp_folder)) { print T_('The folder data/tmp does not exists !'); return ''; } if (!is_writable($tmp_folder)) { print T_('The folder data/tmp must writable !'); return ''; } $file_extension = null; if (endWith(strtolower($file_url), '.png')) { $file_extension = '.png'; } elseif (endWith(strtolower($file_url), '.gif')) { $file_extension = '.gif'; } elseif (endWith(strtolower($file_url), '.jpg') || endWith(strtolower($file_url), '.jpeg')) { $file_extension = '.jpg'; } else { print T_('Unknown file extension'); return ''; } #copy to post_id.png $tmp_file = $tmp_folder . '/post' . $post_id . '-' . time() . '-tmp' . $file_extension; if (!is_file($tmp_file)) { unlink($tmp_file); } file_put_contents($tmp_file, file_get_contents($file_url)); if (!is_file($tmp_file)) { print T_('File not found'); return ''; } #resize image $imgsize = getimagesize($tmp_file); // check the image size $allowed_ratio = 0.4; if ($imgsize[0] / $imgsize[1] < $allowed_ratio || $imgsize[1] / $imgsize[0] < $allowed_ratio) { unlink($tmp_file); print T_('Bad image ratio'); return ''; } $image = null; switch ($file_extension) { case '.jpg': $image = imagecreatefromjpeg($tmp_file); break; case '.jpeg': $image = imagecreatefromjpeg($tmp_file); break; case '.png': $image = imagecreatefrompng($tmp_file); break; case '.gif': $image = imagecreatefromgif($tmp_file); break; } if ($image == null) { unlink($tmp_file); print T_('Unable to create image object'); return ''; } $width = 250; // defined width $height = $imgsize[1] * ($width / $imgsize[0]); // relative height // if the image is smaller or equal : do not resize if ($imgsize[1] <= $height) { $height = $imgsize[1]; $width = $imgsize[0]; unlink($tmp_file); unlink($image); return ''; // and do not save } $final_image = imagecreatetruecolor($width, $height) or $error[] = T_('Error when creating final image'); $filename = 'post' . $post_id . '-' . time() . $file_extension; $file_url = 'data/images/' . $filename; $file_fullpath = $folder . '/' . strtolower($filename); if (is_file($file_fullpath)) { unlink($file_fullpath); } // Adding Alpha channel to created image : imagealphablending($final_image, false); imagesavealpha($final_image, true); $trans_colour = imagecolorallocatealpha($final_image, 0, 0, 0, 127); imagefilledrectangle($final_image, 0, 0, $width, $height, $trans_colour); imagecopyresampled($final_image, $image, 0, 0, 0, 0, $width, $height, $imgsize[0], $imgsize[1]) or $error[] = T_('Error while resizing final image'); imagedestroy($image) or $error[] = T_('Error while deleting temporary image'); // save image to folder if ($file_extension == '.jpg') { $save = imagejpeg($final_image, $file_fullpath, 100); } if ($file_extension == '.png') { $save = imagepng($final_image, $file_fullpath, 0); } if ($file_extension == '.gif') { $save = imagegif($final_image, $file_fullpath); } unlink($tmp_file); if ($save) { #return image URL return $file_url; } else { unlink($file_fullpath); print T_('Problem during saving process'); return ''; } } }
/** * @param $end * @return \Closure */ function notEndWith($end) { return negate(endWith($end)); }