图片未显示PHP

用户名

这是我的计划:

单击提交按钮。图像必须看起来像被剪切了。

但就我而言,它并未按计划出现。

这是我的代码:(只需忽略//后面的//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] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章