imagic librarie中的错误 - php

时间:2011-04-14 17:40:02

标签: php imagick

我正在尝试在眩晕服务中使用类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';

一切正常

感谢

2 个答案:

答案 0 :(得分:2)

使用:

$imagePath = $_FILES["userfile"]["tmp_name"];

w3Schools ref

$_FILES["userfile"]是一个包含所有文件信息的数组。

答案 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的原因。这意味着你要么需要你的“拇指”目录(保存缩略图的位置)在该文件夹中,要么完整地给出正确位置的路径。

乍看之下其余的代码看起来没问题:)