这是我的计划:
单击提交按钮。图像必须看起来像被剪切了。
但就我而言,它并未按计划出现。
这是我的代码:(只需忽略//
后面的//this is where...
<?php
if(isset($_POST['Submit'])){
// loop through the uploaded files
foreach ($_FILES as $key => $value) {
$image_tmp = $value['tmp_name'];
$image_type=$value['type'];
$image = $value['name'];
$image_file = "{$UPLOADDIR}{$image}";
//check if there's existing file name
if ($image != 0){
echo 'File Already Exists!';
} else {
// move the file to the permanent location
if(move_uploaded_file($image_tmp,$image_file)){
// this is where the shearing and displaying part goes
$shear = new Imagick($image_file);
$shear ->shearImage('grey', 10, 5);
$shear ->writeImage($UPLOADDIR.'sheared-'.$image);
echo "<div style='float:left;margin-right:10px'>
<img src='{$shear}' alt='file not found' /></br>
</div>";
} else {
echo "<h1>image file upload failed, image too big after compression</h1>";
}
}
} // end foreach
}
?>
非常感谢您的回复
只是免责声明,尽管我对PHP非常熟悉,但我从未使用过Imagick。
似乎您正在尝试回显Imagick类的实例。如果Imagick的实现具有__toString()的魔术方法,则此方法将正确运行。从我对PHP手册的评论中可以看出,Imagick没有这种方法。
在将字符串输出到HTML图像标记时,您需要src属性值是特定的目录和文件名或以64为基数的编码图像。
您可以使用的一种选择是获取文件blob并使用file_put_contents()保存图像。在图像src中,您将放置文件名。
if(move_uploaded_file($image_tmp,$image_file)) {
$shear = new Imagick($image_file);
$shear->shearImage('grey', 10, 5);
$shear->writeImage($UPLOADDIR.'sheared-'.$image);
$data = $shear->getImageBlob();
file_put_contents('test.png', $data);
echo "<div style='float:left;margin-right:10px'>
<img src='test.png' alt='file not found' /></br>
</div>";
}
另一种可能性是,您可以在单独的变量中分配图像文件路径并输出。
if(move_uploaded_file($image_tmp,$image_file)) {
$shear = new Imagick($image_file);
$shear->shearImage('grey', 10, 5);
$img_path = $UPLOADDIR.'sheared-'.$image;
$shear->writeImage($img_path);
echo "<div style='float:left;margin-right:10px'>
<img src='{$img_path}' alt='file not found' /></br>
</div>";
}
第三种选择是您可以使用base 64编码blob并直接显示它,而不用编写文件。
if(move_uploaded_file($image_tmp,$image_file)) {
$shear = new Imagick($image_file);
$shear->shearImage('grey', 10, 5);
$img_path = $UPLOADDIR.'sheared-'.$image;
$shear->writeImage($img_path);
$data = base64_encode($shear->getImageBlob());
echo "<div style='float:left;margin-right:10px'>
<img src='data:image/jpg;base64,{$data}' alt='file not found' /></br>
</div>";
}
查看此问题以获取更多信息PHP-Imagemagick图像显示
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句