我正在尝试在眩晕服务中使用类Imagick
我有这个表格
<form action="thumb.php" method="post" enctype="multipart/form-data">
<p>
<label for="file">Select a file:</label>
<input type="file" name="userfile" id="file"> <br />
<button>Upload File</button>
<p>
</form>
和这个php
<?php
error_reporting(-1);
$imagePath = $_FILES["userfile"];
$thumbnailWidth = 100;
$thumbnailHeight = 100;
$srgbPath = 'thumb/sRGB_v4_ICC_preference.icc';
$image = new Imagick($imagePath);
$width = $image->getImageWidth();
$height = $image->getImageHeight();
$srgb = file_get_contents($srgbPath);
$image->profileImage('icc', $srgb);
$image->stripImage();
$image->setImageColorspace(Imagick::COLORSPACE_SRGB);
$fitWidth = ($thumbnailWidth / $width) < ($thumbnailHeight / $height);
$image->thumbnailImage(
$fitWidth ? $thumbnailWidth : 0,
$fitWidth ? 0 : $thumbnailHeight
);
$imagePathParts = pathinfo($imagePath);
$thumbnailPath = "thumb/miniaturas/".
$imagePathParts['filename'].'_'.
$thumbnailWidth.'x'.$thumbnailHeight.'.jpg';
$image->setImageCompressionQuality(90);
$image->writeImage($thumbnailPath);
echo $image;
$image->clear();
$image->destroy();
?>
我收到此错误:
致命错误:未捕获异常'ImagickException',消息'无法打开图像`C:\ Users \ fel \ VertrigoServ \ www \ login \ main_image.jpg':没有这样的文件或目录@ error / blob.c / OpenBlob / 2587'在C:\ Users \ fel \ VertrigoServ \ www \ login \ thumb.php:12堆栈跟踪:#0 C:\ Users \ fel \ VertrigoServ \ www \ login \ thumb.php(12):Imagick-&gt ;在第12行的C:\ Users \ fel \ VertrigoServ \ www \ login \ thumb.php中抛出__ construct(数组)#1 {main}
我正在尝试打开位于桌面的图片,但错误似乎是在localhost粘贴中搜索:
`C:\用户\魔\的VertrigoServ \ WWW \登录\ main_image.jpg':
任何想法?
如果我改变了这个
$imagePath = $_FILES["userfile"];
到这个
$imagePath = 'thumb/main.jpg';
一切正常
感谢
答案 0 :(得分:2)
答案 1 :(得分:2)
您遇到的核心问题是上传文件的路径。 $_FILES["userfile"];
没有为您提供文件路径,它会为您提供一系列文件详细信息(有关详情,请参阅http://www.w3schools.com/PHP/php_file_upload.asp)。
您的图片将被复制到PHP临时目录中,并且可以使用$imagePath = $_FILES['userfile']['tmp_name'];
找到其位置。
默认情况下,PHP会查看运行脚本的文件夹,这就是查看C:\Users\fel\VertrigoServ\www\login
的原因。这意味着你要么需要你的“拇指”目录(保存缩略图的位置)在该文件夹中,要么完整地给出正确位置的路径。
乍看之下其余的代码看起来没问题:)