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

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

0 Likes
你目前的身份是游客,评论请输入昵称和电邮!