Пример #1
0
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 '';
        }
    }
}
Пример #2
0
/**
 * @param $end
 * @return \Closure
 */
function notEndWith($end)
{
    return negate(endWith($end));
}