0

さて、私はしばらくこれにいて、いくつかの助けが必要です。サムネイルが必要な3000以上の画像のディレクトリがありますが、phpでそれを実行することはできません:(

私はphpでサムネイルを作成したことがないので、これは私にとって初めてのことです。サーバーに画像をアップロードするときにサムネイルを作成するスクリプトをいくつか見つけました。これからこれを実行します。

画像の場所は、mysqlデータベースにURLとして保存されます。画像のサムネイルを作成するために必要です。もちろん、サムネイルのURLでデータベースを更新します。

これは、ニーズを統合するために使用しているスクリプトです。http:
//net.tutsplus.com/articles/news/how-to-dynamically-create-thumbnails/
まったく同じfunctions.php&configを使用しています。 .phpファイル。

これが私が得たものです:
$ row ['image']は各画像の場所です例:http
://www.url.com/images/image.jpg $ filename私はURLを削除しているので、image.jpgを提供するだけです

<?php
    require 'config.php';  
    require 'functions.php';  
    require 'db.php';  
    $sql = mysql_query("SELECT * FROM pics");  
    while($row = mysql_fetch_array($sql, MYSQL_ASSOC)){  

        $filename = preg_replace('['.$url.']', '', $row['image']);              
        $source = $row['image'];

        createThumbnail($filename);

        $thumb_loc = $url . "images/thumbs/" . $filename;
        $id = $row['id'];
        mysql_query("UPDATE pics SET image_thumb = '$thumb_loc' WHERE id = '$id'");
    }
?>

適切なファイル名を$filenameに、画像ソースを$ sourceに提供しているので、機能するはずです
。functions.phpのcreateThumbnail関数は次のとおりです。

<?
function createThumbnail($filename) {

    require 'config.php';

    if(preg_match('/[.](jpg)$/', $filename)) {
        $im = imagecreatefromjpeg($path_to_image_directory . $filename);
    } else if (preg_match('/[.](gif)$/', $filename)) {
        $im = imagecreatefromgif($path_to_image_directory . $filename);
    } else if (preg_match('/[.](png)$/', $filename)) {
        $im = imagecreatefrompng($path_to_image_directory . $filename);
    }

    $ox = imagesx($im);
    $oy = imagesy($im);

    $nx = $final_width_of_image;
    $ny = $final_height_of_image;

    $nm = imagecreatetruecolor($nx, $ny);

    imagecopyresized($nm, $im, 0,0,0,0,$nx,$ny,$ox,$oy);

    if(!file_exists($path_to_thumbs_directory)) {
      if(!mkdir($path_to_thumbs_directory)) {
           die("There was a problem. Please try again!");
      }
       }

    imagejpeg($nm, $path_to_thumbs_directory . $filename);
    $tn = '<img src="' . $path_to_thumbs_directory . $filename . '" alt="image" />';
    $tn .= '<br />Congratulations. Your file has been successfully uploaded, and a    thumbnail has been created.';
    echo $tn;
}
?>

警告は次のとおりです。

Warning: imagecreatefromjpeg(images/fullsized/image.jpg) [function.imagecreatefromjpeg]: failed to open stream: No such file or directory in functions.php on line 7

Warning: imagesx(): supplied argument is not a valid Image resource in functions.php on line 14

Warning: imagesy(): supplied argument is not a valid Image resource in functions.php on line 15

Warning: Division by zero in functions.php on line 18

Warning: imagecreatetruecolor() [function.imagecreatetruecolor]: Invalid image dimensions in functions.php on line 20

Warning: imagecopyresized(): supplied argument is not a valid Image resource in functions.php on line 22

Warning: imagejpeg(): supplied argument is not a valid Image resource in functions.php on line 30

誰かがここで私を助けてくれますか?

4

1 に答える 1

2

問題は、操作する画像ファイルに指定しているパスが、スクリプトの場所から有効ではないことです。

例のファイルは次のimages/fullsized/image.jpgとおりで、関連するエラーは次のとおりです。failed to open stream: No such file or directory in functions.php on line 7

imagecreatefromjpeg開くファイルを指定するときは、絶対パスを使用する必要があり$_SERVER['DOCUMENT_ROOT'] . '/images/fullsized/image.jpg'ます/home/yoursite/public_html/images/fullsized/image.jpg

フル パスまたは絶対パスは、作業ディレクトリまたは結合されたパスに関係なく、1 つのファイル システム上の同じ場所を指すパスです。通常、ルート ディレクトリを参照して記述されます。

他のすべてのエラー メッセージは、イメージを開けないという副作用にすぎません。パスが正しくないため、GD イメージが作成されず、呼び出された関数が機能しません。

于 2012-04-30T22:34:52.117 に答える