0

我正在尝试在眩晕服务中使用 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->__construct(Array ) #1 {main} 在第 12 行的 C:\Users\fel\VertrigoServ\www\login\thumb.php 中抛出

我正在尝试打开位于桌面中的图像,但错误似乎在 localhost 粘贴中搜索:

`C:\Users\fel\VertrigoServ\www\login\main_image.jpg':

任何的想法?

如果我改变这个

$imagePath = $_FILES["userfile"];

对此

$imagePath = 'thumb/main.jpg';

一切正常

谢谢

4

2 回答 2

2

采用:

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

w3Schools 参考

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

于 2011-04-14T17:45:50.243 回答
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. 这意味着您要么需要该文件夹中的“thumbs”目录(保存缩略图的位置),要么提供完整正确位置的路径。

乍一看,其余代码看起来还不错:)

于 2011-04-14T17:46:01.353 回答