0

私はこのコードを持っています。

イメージを Web サーバーにチャージし、その名前を SQL に保存します。

サイズ変更時以外はすべて機能します。http://php.net/manual/en/function.imagecopyresampled.phpで関数を見つけました

どんな助けでも大歓迎です。

ありがとう。

<?php
if(isset($_FILES["AddPhoto"])) {

    if ($_FILES["AddPhoto"]["error"] > 0) {
        $newImgMessError = $MYCARDEDIT0058;
    }
    else {
        $fileName = $_FILES['AddPhoto']['name'];
        $tmpName  = $_FILES['AddPhoto']['tmp_name'];
        $fileSize = $_FILES['AddPhoto']['size']/1024;
        $fileType = $_FILES['AddPhoto']['type'];
        $fileExtension = end(explode(".", $fileName));

        if(($fileType == "image/gif" || $fileType == "image/jpeg" || $fileType == "image/pjpeg" || $fileType == "image/png" || $fileType == "image/x-png") && $fileSize < 1000000) {

            $newFileName = md5(date('u').rand(0,99)).".".$fileExtension;
            $imagePath = "assets/picts/".$newFileName;




// THIS PART DO NOT WORK            
// Set a maximum height and width
$width = 200;
$height = 200;

// Get new dimensions
list($width_orig, $height_orig) = getimagesize($imagePath);

$ratio_orig = $width_orig/$height_orig;

if ($width/$height > $ratio_orig) {
   $width = $height*$ratio_orig;
} else {
   $height = $width/$ratio_orig;
}

// Resample
$image_p = imagecreatetruecolor($width, $height);
$image = imagecreatefromjpeg($imagePath);
imagecopyresampled($image_p, $image, 0, 0, 0, 0, $width, $height, $width_orig, $height_orig);

// Output
$imagePath = imagejpeg($image_p, null, 100);            








            $result = @move_uploaded_file($tmpName, $imagePath);

            $request = mysql_query("SELECT ".$TypeField."Images FROM $TypeFiche WHERE $TypeId='$cardId'");
            $var2 = mysql_fetch_array($request);

            mysql_query("UPDATE ".$TypeFiche." SET `".$TypeField."Images`='".$var2[$TypeField.'Images'].$newFileName.",' WHERE $TypeId='$cardId'");

            if (!$result) {
                $newImgMessError = $INSCRIPTION0074." <b>".$fileName."</b>. ".$INSCRIPTION0075."<br />";
            }
            if ($result) {
                $newImgMessError = $INSCRIPTION0076." <b>".$fileName."</b> ".$INSCRIPTION0077."<br />";
            }
        }
    }
}

?>
4

1 に答える 1

0

1. サイズを変更する前に、ファイルを新しいディレクトリに移動する必要があります。この行の下にサイズを変更します。

$result = @move_uploaded_file($tmpName, $imagePath);

それ以外の場合、サイズ変更コードはまだ存在しないファイルにアクセスしようとします。

2.新しいイメージをファイルとして書き出す必要があるため、その行を置き換えます

 $imagePath = imagejpeg($image_p, null, 100);    

これとともに

imagejpeg($image_p, $imagePath, 100); 

http://php.net/manual/en/function.imagejpeg.php

于 2013-10-19T16:29:36.460 に答える