0

アップロードされた画像ファイルからサムネイルを作成し、それをサーバーにアップロードする際に問題が発生しました。

現在、サムネイルを作成し、それを一時的に保存して呼び出し元に返す関数があります。

次に、move_uploaded_file(tempthumb, path); で作成したサム イメージをアップロードします。

createThumb 関数と呼び出し元は次のとおりです。

function createThumb( $image, $thumbWidth )
{
  // load image and get image size
  $img = imagecreatefromjpeg( "{$image}" );
  $width = imagesx( $img );
  $height = imagesy( $img );

  // calculate thumbnail size
  $new_width = $thumbWidth;
  $new_height = floor( $height * ( $thumbWidth / $width ) );

  // create a new temporary image
  $tmp_img = imagecreatetruecolor( $new_width, $new_height );

  // copy and resize old image into new image 
  imagecopyresized( $tmp_img, $img, 0, 0, 0, 0, $new_width, $new_height, $width, $height);

  return $tmp_img;

}

return $tmp_img; // Here I return the new image. Is this the proper way to get a binary image back??

呼び出し元は次のとおりです。

$thumb = createThumb($_FILES['propform-previmg']['tmp_name'], $max_previmg_width); 
        $filenamepath = $src_dir . '/thumb/' . $_FILES['propform-previmg']['name'];
        if ( !move_uploaded_file($thumb, $filenamepath ))
            echo "Error moving file {$filenamepath}";

最初にサムネイルを作成しようとせずに、アップロードしたファイルを直接アップロードしようとしましたが、うまくいきました。したがって、createThumb 関数から返される変数に何らかのエラーがあると思いますが、正確にはわかりません。

また、imagejpeg(file, path) を使用して createThumb 関数内ではなく、呼び出し元コードからアップロードする必要があります。

ありがとうございました!

4

1 に答える 1

0

マニュアルの最初の行:

この関数は、ファイル名で指定されたファイルが有効なアップロード ファイル (つまり、PHP の HTTP POST アップロード メカニズムを介してアップロードされたもの) であることを確認します。ファイルが有効な場合、宛先で指定されたファイル名に移動されます。

サムネイルはアップロードされていません。まだファイルではなく、単なる画像リソースです。イメージを書き込むには、 のようなものを呼び出して、imagejpeg($resource, $filename)で指定されたパスに書き込みます$filename

于 2012-06-19T09:19:20.013 に答える