当我使用php脚本在图像所在的同一文件夹中使用imagick basics时,使用文件名输出是完美的,它会输出PDF第1页的图像:
// Read page 1
$im = new imagick( 'Miami_Guide.pdf[0]' );
// Convert to png
$im->setImageFormat( "png" );
// Send out
header( "Content-Type: image/png" );
echo $im;
以下是挑战:如何将此脚本移动到其他目录并使用名为$ upload的字段名来代替数据库记录?我试过这个,但它不起作用:
$path: '../../otherplace/';
// $uploaded is the field with the filename value
$fileloc: $path . $uploaded;
// Read page 1
$im = new imagick( '$fileloc[0]' );
// Convert to png
$im->setImageFormat( "png" );
// Send out
header( "Content-Type: image/png" );
echo $im;
我得到一个“致命错误:未捕获异常'ImagickException',消息'无法读取文件:$ fileloc'在/home/user/public_html/dir/folder/script.php:334堆栈跟踪:#0 / home / user / public_html / dir / folder / script.php(334):Imagick-> __ construct('$ fileloc')#1 /home/user/public_html/dir/folder/script.php(226):show_record(数组)在第334行的/home/user/public_html/dir/folder/script.php中抛出#2 {main}
还尝试了pathinfo()和致命错误
我做了一些调整,但现在Imagick正在返回乱码而不是图像:
$sourcePath = 'dir/folder/'; // Path of original image
$sourceUrl = 'http://www.site.com/';
$thumbPath = $sourcePath; // Writeable thumb path
$thumbUrl = $sourceUrl . $thumbPath . $uploaded ;
$im = new Imagick($thumbUrl);
$im->setImageFormat( "jpg" );
$im->thumbnailImage(100, 100);
header("Content-type: image/jpg");
echo "$im";
“没有错误”,但输出乱码而不是图像:
ÿÛCÿÀdd“ÿÄÿÄ9!1”#A2QVh'•||| $ Waq±ÓÿÄÿÄ)!1Qq“A'Òar'¡ÿÿÚ?Íkßμ+¾;é=ÕÜŽW#ü-ÙænÝ»ë'çOo'OÒÝr2_^¬ÇiÓFãaR > 5 $ò~\'0#Ïn¢ - ························ ݤ®§,ǤW,º£<ÁÃ?〜。 - '¤ÅÅKn@«DE±gÄ©“hm&amp;ã¥öÔ«b¬..........
任何帮助?
答案 0 :(得分:0)
你的第一个例子不起作用的原因是你的变量在单引号内,而不是双引号。
此:
$im = new imagick( '$fileloc[0]' );
告诉imagemagick查找名为$fileloc
的文件,该文件当然不存在。
改为:
$im = new imagick( "$fileloc[0]" );
至于你的第二个例子,我相信你遇到了问题,因为出于某些原因你在$im
时将echo
放在引号内。你应该像在工作测试中一样回应它:
echo $im;
不
echo "$im";
答案 1 :(得分:0)
以下是解决方案:
而不是:
echo $img;
你应该回应:
echo "<img src='data:image/jpg;base64,".base64_encode($img)."' />";
这解决了我的Imagick问题,我希望它会帮助别人。
我确定的一件事是测试基础知识:test.pdf&gt; test.jpg,也测试过:test.pdf&gt; test.png,test.pdf&gt; test.tiff - 一旦我确定所有扩展都在代理中并且工作正常,我移动到不同的目录并从其他地方提取文件。
简要介绍所有步骤:
1-安装了imagick(php) - 我相信它是开发的
2-通过http://
设置文件的路径3-其余的几乎是Imagick的基础知识:
$pdfUrl = "http://www.site.com/dir/$file";
$img = new Imagick($pdfUrl);
$img->setImageFormat("jpeg");
echo "<img src='data:image/jpg;base64,".base64_encode($img)."' />";