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'とメッセージ'unable to open image `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にスローされました

デスクトップにある画像を開こうとしていますが、ローカルホストの貼り付けでエラーが検索されているようです。

`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 ref

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。これは、そのフォルダーに「親指」ディレクトリ (サムネイルを保存する場所) が必要になるか、正しい場所への完全なパスを指定する必要があることを意味します。

コードの残りの部分は一見問題ないように見えます:)

于 2011-04-14T17:46:01.353 に答える