質問

画像がディメンション604x453を超えている場合は、604x453にサイズを変更します。

私はここまでそれを作りました:

    $org_name = stripslashes($_FILES[$upload_name]['name']);
    $file_size = $_FILES[$upload_name]['size'];
    $file_temp = $_FILES[$upload_name]['tmp_name'];
    $file_type = $_FILES[$upload_name]["type"];
    $file_err  = $_FILES[$upload_name]['error'];
list($width, $height, $type, $attr) = $imageSizeInfo;
    $move_me = "images/users/status/".$org_name;
if(move_uploaded_file($file_temp, $move_me)) {
    echo "{";
    echo        "msg: '".$org_name."'";
    echo "}";
}
if($width > 604 && $height > 453) {
$jpeg_quality = 90;
$src = "images/users/status/".$org_name;
$ext= pathinfo($src, PATHINFO_EXTENSION);
$targ_h = 453;
$targ_w = 604;
$path_thumbs = "images/users/status/";
$thumb_path = $path_thumbs . '/' . $newfilename;

if($ext == "jpg" OR $ext == "jpeg" OR $ext == "JPG"){
    $img_r = imagecreatefromjpeg($src);
}elseif($ext == "png" OR $ext == "PNG"){
    $img_r = imagecreatefrompng($src);
}elseif($ext == "gif" OR $ext == "GIF"){ 
    $img_r = imagecreatefromgif($src);
}
$dst_r = ImageCreateTrueColor( $targ_w, $targ_h );

imagejpeg($dst_r,$thumb_path,$jpeg_quality);

unlink($move_me);
}

したがって、最初にファイルを元の寸法とすべてでアップロードし、次に寸法をチェックしてからサイズを変更し、元のものをリンク(削除)します。

今、私は何がわかりませんが、どういうわけかサイズ変更手順でそれはうまくいかず、私は寸法604x453に黒い正方形を出力として取得します。

何が恋しいのですか、どうすればこれを解決できますか?

役に立ちましたか?

解決

あなたの間 ImageCreateTrueColorimagejpeg 行、あなたはこのようなものが必要です:

imagecopyresampled($dst_r, $img_r, 0, 0, 0, 0, $targ_w, $targ_h, $width, $height);

PHPマニュアルを参照してください imagecopyresampled().

古いコードは、基本的に正しいサイズの空白のキャンバスを作成し、そこから「黒い正方形」を作成しました。

あなたも使用する必要があります getimagesize() ファイル拡張子を使用する代わりに、アップロードされた画像の種類を決定するため。

インデックス2は、画像のタイプを示すImageType_XXX定数の1つです。

この理由は、呼び出される画像がアップロードされることは完全にもっともらしいからです file.jpg, 、しかし、それは実際にです .png ファイル - getimagesize() 画像内のバイトを調べて、それがどの形式であるかを決定します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top