Пример #1
0
 function thumbnail($img, $tnpath, $w, $h)
 {
     $org_info = $this->getimg($img);
     if ($org_info) {
         if ($org_info[0] / $org_info[1] >= 4 / 3) {
             $y = round($org_info[1] / ($org_info[0] / $w));
             $x = $w;
         } else {
             $x = round($org_info[0] / ($org_info[1] / $h));
             $y = $h;
         }
         $sm_image = imagecreatetruecolor($x, $y);
         Imagecopyresampled($sm_image, $org_info['from'], 0, 0, 0, 0, $x, $y, $org_info[0], $org_info[1]);
         $_creatImage = $org_info['creat'];
         if ($_creatImage == 'imagejpeg') {
             $thumbnail = @$_creatImage($sm_image, $tnpath, 80);
         } else {
             $thumbnail = @$_creatImage($sm_image, $tnpath);
         }
         imagedestroy($sm_image);
         return $thumbnail;
     } else {
         return false;
     }
 }
Пример #2
0
function image_processing($image_input, $image_output, $width = null, $height = null, $imagefield = '')
{
    global $wpdb;
    /*
     * this handles all resizing of images that results in a file being saved, if no width and height is supplied, then it just copies the image
     */
    $imagetype = getimagesize($image_input);
    if (file_exists($image_input) && is_numeric($height) && is_numeric($width) && function_exists('imagecreatefrompng') && ($height != $imagetype[1] && $width != $imagetype[0])) {
        switch ($imagetype[2]) {
            case IMAGETYPE_JPEG:
                $src_img = imagecreatefromjpeg($image_input);
                $pass_imgtype = true;
                break;
            case IMAGETYPE_GIF:
                $src_img = imagecreatefromgif($image_input);
                $pass_imgtype = true;
                break;
            case IMAGETYPE_PNG:
                $src_img = imagecreatefrompng($image_input);
                $pass_imgtype = true;
                break;
            default:
                move_uploaded_file($image_input, $imagedir . basename($_FILES[$imagefield]['name']));
                $image = $wpdb->escape(basename($_FILES[$imagefield]['name']));
                return true;
                exit;
                break;
        }
        if ($pass_imgtype === true) {
            $source_w = imagesx($src_img);
            $source_h = imagesy($src_img);
            //Temp dimensions to crop image properly
            $temp_w = $width;
            $temp_h = $height;
            // if the image is wider than it is high and at least as wide as the target width.
            if ($source_h <= $source_w) {
                if ($height < $width) {
                    $temp_h = $width / $source_w * $source_h;
                } else {
                    $temp_w = $height / $source_h * $source_w;
                }
            } else {
                $temp_h = $width / $source_w * $source_h;
            }
            // Create temp resized image
            $temp_img = ImageCreateTrueColor($temp_w, $temp_h);
            $bgcolor = ImageColorAllocate($temp_img, 255, 255, 255);
            ImageFilledRectangle($temp_img, 0, 0, $width, $height, $bgcolor);
            ImageAlphaBlending($temp_img, TRUE);
            if ($imagetype[2] == IMAGETYPE_PNG) {
                imagesavealpha($temp_img, true);
                ImageAlphaBlending($temp_img, false);
            }
            // resize keeping the perspective
            Imagecopyresampled($temp_img, $src_img, 0, 0, 0, 0, $temp_w, $temp_h, $source_w, $source_h);
            if ($imagetype[2] == IMAGETYPE_PNG) {
                imagesavealpha($temp_img, true);
                ImageAlphaBlending($temp_img, false);
            }
            $dst_img = ImageCreateTrueColor($width, $height);
            $white = ImageColorAllocate($dst_img, 255, 255, 255);
            ImageFilledRectangle($dst_img, 0, 0, $width, $height, $white);
            ImageAlphaBlending($dst_img, TRUE);
            imagecolortransparent($dst_img, $white);
            // X & Y Offset to crop image properly
            if ($temp_w < $width) {
                $w1 = $width / 2 - $temp_w / 2;
            } else {
                if ($temp_w == $width) {
                    $w1 = 0;
                } else {
                    $w1 = $width / 2 - $temp_w / 2;
                }
            }
            if ($imagetype[2] == IMAGETYPE_PNG) {
                imagesavealpha($dst_img, true);
                ImageAlphaBlending($dst_img, false);
            }
            // Final thumbnail cropped from the center out.
            if (!isset($h1)) {
                $h1 = 0;
            }
            ImageCopy($dst_img, $temp_img, $w1, $h1, 0, 0, $temp_w, $temp_h);
            $image_quality = wpsc_image_quality();
            switch ($imagetype[2]) {
                case IMAGETYPE_JPEG:
                    if (@ImageJPEG($dst_img, $image_output, $image_quality) == false) {
                        return false;
                    }
                    break;
                case IMAGETYPE_GIF:
                    if (function_exists("ImageGIF")) {
                        if (@ImageGIF($dst_img, $image_output) == false) {
                            return false;
                        }
                    } else {
                        ImageAlphaBlending($dst_img, false);
                        if (@ImagePNG($dst_img, $image_output) == false) {
                            return false;
                        }
                    }
                    break;
                case IMAGETYPE_PNG:
                    imagesavealpha($dst_img, true);
                    ImageAlphaBlending($dst_img, false);
                    if (@ImagePNG($dst_img, $image_output) == false) {
                        return false;
                    }
                    break;
            }
            usleep(50000);
            //wait 0.05 of of a second to process and save the new image
            imagedestroy($dst_img);
            //$image_output
            $stat = stat(dirname($image_output));
            $perms = $stat['mode'] & 0666;
            @chmod($image_output, $perms);
            return true;
        }
    } else {
        copy($image_input, $image_output);
        $image = $wpdb->escape(basename($_FILES[$imagefield]['name']));
        return $image;
    }
    return false;
}