我正在使用以下脚本将图像保存在文件夹中,但有一个图像显示此消息“图像无法显示,因为它包含错误”.
我认为这个问题在图像上有一个叫做cmyk和rgb的东西,但是当在网上搜索一种方式,所以使用php将cmyk转换为rgb我找不到如何做到这一点的例子.
这是一个例子:http://offshootinc.com/blog/2008/10/24/using-the-imagick-class-to-convert-a-cmyk-jpeg-to-rgb/但我不知道如何在我的情况下使用它.
图片的链接类似于:www.example.com/attachment?id = 2290
脚本如下:
<?php
$image = 'http://www.dealrush.ie/attachment?id=2290';
$name = 'somename';
$alt = 'somealt';
$saveimage = file_get_contents($image);
file_put_contents("/usr/local/pem/vhosts/155030/webspace/httpdocs/img/$name.jpg", $saveimage);?>
稍后在某些页面中,我将使用类似的内容来显示图像.
< img src =“http://www.example.com/img/\u0026lt;?php echo $name?> .jpg”alt =“<?php echo $alt?>” height =“127px”width =“190px”/>
任何有关转换这些图像的帮助将不胜感激
谢谢
丹尼尔
解决方法:
我怀疑颜色空间(CMYK或RGB)是你的问题.虽然每个人都应该在网络上使用RGB图像,但浏览器仍会显示CMYK图像而不会抱怨.
要将图像从CMYK转换为RGB,您需要安装一个想象操作程序,例如ImageMagick,GraphicsMagick或ExactImage.其中任何一个都可以做你想要的,但必须由服务器管理员安装.如果你很幸运,可能已经安装了ImageMagick,在这种情况下你可以这样做:
$image= '/path/to/your/file.jpg';
$i = new Imagick($image);
$i->setImageColorspace(Imagick::COLORSPACE_SRGB);
$i->writeImage($image);
$i->destroy();
请注意,ImageMagick是最强大的,ExactImage是最快的,而GraphicsMagick是ImageMagick的一个民谣,它更快但功能稍弱并且有一些错误.只有ImageMagick可以在PHP中使用,其他的必须用exec函数执行,虽然这不一定是坏事,因为它们可能比PHP更好地处理自己的内存和清理.