SAE 外链图片下载并生成缩略图

最近在鼓捣 SAE版的Wordpess,SAE空间禁止写入,主题自动缩略图TimeThumb失效,一时在网上没找到怎么修改TimeThumb,最多的解决办法是把要写入的文件、图片保存到Storage里,而我主题一般都是外链的多,网上有关的SAE保存外链图片并自动生产缩略图的零零碎碎,对于PHP ,我只是皮毛,幸好有伟大的百度,问题就简单了一点,最后还是解决了问题,但图片加载速度还是没有主题自带的TimeThumb快,可能我只是做到了,而其中的效率没有兼顾。
以下就是代码,有望高手指点改进。 在线测试

<?php   
function resize($image, $width, $height, $crop) {  
    $DomainName = 'cache'; //缩略图存放的domain  
    $hostUrl = 'http://' . $_SERVER['HTTP_APPNAME'] . '-' . $DomainName . '.stor.sinaapp.com/';  
    //$hostUrl='http://'.$appName.'-'.$DomainName.'.stor.sinaapp.com/';  
    $path_parts = pathinfo($image);  
    $myimage_name = $path_parts["filename"];  
    $myimage_extension = $path_parts["extension"];  
    $img_name_one = $myimage_name . '_' . $width . '_' . $height . '.' . $myimage_extension;  
    $img_name_two = $myimage_name . '_' . $width . '.' . $myimage_extension;  
    $myimage = new Imagick();// php 图片类 具体用法:http://php.net/manual/zh/book.imagick.php  
    $s = new SaeStorage();//sae 类 http://apidoc.sinaapp.com/class-SaeStorage.html  
    $myimage->readImage($image);  
    $w = $myimage->getImageWidth();  
    $h = $myimage->getImageHeight();  
    if ($crop) {//判断是否裁剪  
        if ($s->fileExists($DomainName, $img_name_one)) {  
            return $hostUrl . $img_name_one;  
        } else {  
            $myimage_new_name = $img_name_one;  
            $myimage->cropThumbnailImage($width, $height);//居中裁剪  
        }  
    } else {  
        if ($s->fileExists($DomainName, $img_name_two)) {  
            return $hostUrl . $img_name_two;  
        } else {  
            $new_height =  $h * ($width /  $w);  
            $myimage_new_name = $img_name_two;  
            $myimage->resizeImage($width, $new_height, Imagick::FILTER_CATROM, 1, false);//等比缩放  
        }  
    }//图片压缩  http://blog.lizhigang.net/archives/228  
    $myimage->setImageFormat('jpeg');  
    $myimage->setImageCompression(Imagick::COMPRESSION_JPEG);  
    $a = $myimage->getImageCompressionQuality() * 0.75;  
    if ($a == 0) {  
        $a = 75;  
    }  
    $myimage->setImageCompressionQuality($a);  
    $myimage->stripImage();  
    $content = $myimage->getImageBlob();  
    $myimage->clear();  
    $myimage->destroy();  
    $saeImage = $s->write($DomainName, $myimage_new_name, $content);  
    return $saeImage;  
}  
?>  
0 Likes
你目前的身份是游客,评论请输入昵称和电邮!