回答
我解决了它,将与世界分享!它会将.ai,.psd,.jpg,.png,.gif转换为缩略图。
这里是一个函数,采用4个PARAMS:
$ DIR - 目录保存到。
$ tmpName - 命名文件的名称,不包括扩展名。
$ fileType - 不言自明。
$尺寸 - 大或小。
function thumbGenerator($dir,$tmpName,$fileType,$size){
$saveFileType = "png";
$imagePath = $dir.$tmpName.".".$fileType;
$image = new Imagick();
$image->readimage($imagePath);
if($fileType == "psd"){
$image->setIteratorIndex(0);
}
$dimensions = $image->getImageGeometry();
$width = $dimensions['width'];
$height = $dimensions['height'];
if($size == "large"){
$maxWidth = 720;
$maxHeight =720;
}
if($size == "small"){
$maxWidth = 250;
$maxHeight =250;
}
if($height > $width){
//Portrait
if($height > $maxHeight)
$image->thumbnailImage(0, $maxHeight);
$dimensions = $image->getImageGeometry();
if($dimensions['width'] > $maxWidth){
$image->thumbnailImage($maxWidth, 0);
}
}elseif($height < $width){
//Landscape
$image->thumbnailImage($maxWidth, 0);
}else{
//square
$image->thumbnailImage($maxWidth, 0);
}
if($size == "large"){
$image->writeImage($dir . $tmpName."-lg.".$saveFileType);
}
if($size == "small"){
$image->writeImage($dir . $tmpName."-sm.".$saveFileType);;
}
}
如果它工作,然后接受你的答案。干杯! –
@Jason - 感谢分享。这里有一些提示更简洁,更易于维护/扩展代码。同样,这很大程度上取决于您的要求。另外,我没有真正运行这个代码,所以请原谅任何错误。
$ dir - 要保存到的目录。
$ tmpName - 命名文件的名称,不包括扩展名。
$ fileType - 不言自明。
$尺寸 - 大或小。 您可以考虑缩略图的像素宽度值,而不是预定义宽度的字符串。假设您将来需要在网页的新部分放置更大的缩略图(例如,对于“小”缩略图,带有500px的视网膜就绪图标)。应该优选地限定在代码的新部分的尺寸,而不是在共享thumbGenerator功能
function thumbGenerator($dir,$tmpName,$fileType,$size){
$saveFileType = "png";
$imagePath = $dir.$tmpName.".".$fileType;
$image = new Imagick();
$image->readimage($imagePath);
if($fileType == "psd"){
$image->setIteratorIndex(0);
}
/* Simplify this code section below
$dimensions = $image->getImageGeometry();
$width = $dimensions['width'];
$height = $dimensions['height'];
*/
list($width,$height) = $image->getImageGeometry(); // <--- new code
/* Use $size for the pixel width/height instead and remove the code below
if($size == "large"){
$maxWidth = 720;
$maxHeight =720;
}
if($size == "small"){
$maxWidth = 250;
$maxHeight =250;
}
*/
if($height > $width){
//Portrait
if($height > $size)
$image->thumbnailImage(0, $size);
$dimensions = $image->getImageGeometry();
if($width > $size){ // <--- use the previously created $width variable
$image->thumbnailImage($size, 0);
}
/* Don't need this duplicate code.
}elseif($height < $width){
//Landscape
$image->thumbnailImage($maxWidth, 0);
*/
}else{
// square or landscape
$image->thumbnailImage($maxWidth, 0);
}
/* DRY - do not repeat yourself - Simplify it and use the pixel width in the image name
if($size == "large"){
$image->writeImage($dir . $tmpName."-lg.".$saveFileType);
}
if($size == "small"){
$image->writeImage($dir . $tmpName."-sm.".$saveFileType);;
}
*/
$image->writeImage($dir . $tmpName."-".$size.".".$saveFileType);;
}
谢谢,反馈。很快你能学到一些东西,一个月后回来,而且你永远不会这么做。其中一些您注释为重复的功能实际上是必要的,因为它们是特定于应用程序的。我赞赏批评。谢谢! –
你真的测试过这段代码吗?它不适合我,特别是'list($ width,$ height)= $ image-> getImageGeometry()'部分。因为结果不是大小为2的数组,而是关联的数组('width'=> 23,'height'=> 42)' –
- 1. 使用ANT将PSD转换为PNG/JPG
- 2. PHP - 使用Imagick将EPS转换为PNG
- 3. 将PSD转换为HTML
- 4. 将PSD转换为网站
- 5. 如何将.psd或.ai文件转换为多种尺寸的PNG?
- 6. PSD转换为XHTML/CSS转换
- 7. PSD转换为html格式
- 8. 将ImageMagick CLI转换为PHP Imagick API
- 9. php imagick将PNG转换为jpg
- 10. 如何将.ai文件转换为PNG
- 11. 如何将ai转换为cdr for linux
- 12. 如何使用Ghostscript将psd(photoshop文件)或tiff转换为PNG?
- 13. 使用ImageMagick将PSD转换为各种Android密度图像
- 14. 使用Imagick将图像从RGB转换为CMYK
- 15. 使用php imagick将图像转换为草图
- 16. ImageMagick/Imagick使用原生PHP API将PDF转换为JPG
- 17. 如何将文本转换为使用php的imagick的图像?
- 18. 使用Imagick将rgb图像转换为cmyk
- 19. 使用imagick将PDF转换为使用imagick的JPG使用flat PDF工作,但在多层时失败
- 20. 使用Imagick转换透明PDF文件
- 21. imagick将png转换为jpg,在java中用im4java
- 22. PHP Imagick CMYK PDF转换为JPG
- 23. 如何将psd中的灯光效果转换为xhtml?
- 24. 将psd转换为PNG给通过imagemagick给垃圾输出
- 25. 将PSD转换为Android XML(布局)格式?
- 26. 如何将PSD设计转换为Android xml?
- 27. 我应该如何将此PSD转换为HTML&CSS菜单
- 28. 如何将此对象从.PSD转换为HTML/CSS?
- 29. 如何使用PHP中的Imagick库将PDF文件转换为图像?
- 30. 使用Imagick php扩展将多页PDF转换为JPG时的黑色背景
命令行的ImageMagick具有'convert'。尝试'convert orig.psd output.jpg',看看它是否会这样做 - 如果是这样,那么你可以开始搞乱调整大小的选项。如果没有,那么你就不会浪费时间咆哮错误的树。 –
有没有办法从php(imagick)做命令行的东西? –
这就是为什么你可以测试转换,看看它是否会工作。一个简单的命令v.s.几个小时试图轰炸一个PHP脚本来做同样的事情。 –