0

背景画像をフォルダーにアップロードし、ファイル名をデータベースに保存するボタンがありますが、アップロードする前に画像のサイズを変更する方法がわかりません。実際、私は2つの問題に直面しています。1 - 画像のサイズを変更してアップロードする方法。2 - 寸法が異なる div の背景画像として画像を表示する方法。

私が今までやってきたこと:

HTML

<div class="image_load_div">
 <form id="imageform" enctype="multipart/form-data" method="post" action="upload.php">
   <input name="photoimg" id="photoimg" type="file"/>
 </form>
</div>

JavaScript

$("#imageform").ajaxForm().submit(); 

php - ファイルのアップロード

$valid_formats = array("jpg", "png", "gif", "bmp");
if(isset($_POST) and $_SERVER['REQUEST_METHOD'] == "POST") {
   name = $_FILES['photoimg']['name'];
   $size = $_FILES['photoimg']['size'];
   if(strlen($name)) {
 list($txt, $ext) = explode(".", $name);
 if(in_array($ext,$valid_formats)) {
   if($size<(1024*1024)) {
          session_start();
      $id = $_SESSION['QuestionId'];
      $path = "/images/Img/".$id."_bg.".$ext;

          if( move_uploaded_file($_FILES["photoimg"]["tmp_name"],$path) ) {
             // Save the file name into database
          }
        else { echo "<script>alert('Upload failed');</script>"; }
   else { echo "<script>alert('Image file size max 1 MB');</script>"; }                 
    else {  echo "<script>alert('Invalid file format..');</script>"; }  
 else { echo "<script>alert('Please select image..!');</script>";   exit; }

画像を height:408px; として保存したいと思います。幅:490px; 画像を表示するときに、この画像を表示したい width:174px; 高さ:108px; IMP ! アップロード中および表示中は、縦横比を考慮する必要があります。 今のところアップロードは機能しています。

これを解決するのを手伝ってください。ありがとう。

4

2 に答える 2

1

これは機能しており、十分にテストされたコードです。それがあなたのために働くことを願っています。

methodeの呼び出し:

$newname="xyz";
$filename=$_FILES['featured-img']['name'];
$extension=strtolower(substr(strrchr($filename, '.'), 1)); //Get extension
$extension=trim($extension);
$newfilename=$newname.$extension;
$newfilename=preg_replace('/\s+/', '_',$newfilename);

$target1 = "directory_path".$newfilename;
if(move_uploaded_file($_FILES['featured-img']['tmp_name'],$target1));   
scaleImage($target1,500, 350, $target1);

メソッドの定義:

function scaleImage($source_image_path, $maxWidth, $maxHeight, $thumbnail_image_path){


          list($source_image_width, $source_image_height, $source_image_type) = getimagesize($source_image_path);
    switch ($source_image_type) {
        case IMAGETYPE_GIF:
            $source_gd_image = imagecreatefromgif($source_image_path);
            break;
        case IMAGETYPE_JPEG:
            $source_gd_image = imagecreatefromjpeg($source_image_path);
            break;
        case IMAGETYPE_PNG:
            $source_gd_image = imagecreatefrompng($source_image_path);
            break;
    }
    if ($source_gd_image === false) {
        return false;
    }
    $thumbnail_image_width=$maxWidth;
    $thumbnail_image_height=$maxHeight;


    $thumbnail_gd_image = imagecreatetruecolor($thumbnail_image_width, $thumbnail_image_height);
    imagecopyresampled($thumbnail_gd_image, $source_gd_image, 0, 0, 0, 0, $thumbnail_image_width, $thumbnail_image_height, $source_image_width, $source_image_height);
    imagejpeg($thumbnail_gd_image, $thumbnail_image_path, 90);
    imagedestroy($source_gd_image);
    imagedestroy($thumbnail_gd_image);
    return true;


}
于 2013-02-16T10:56:57.887 に答える
0

これには CSS を使用できますが、プロポーションは維持されます。

<img src="image.png" style="max-width: 400px;">

次に、phpを使用して画像のサイズを小さくし、すべての最大サイズをキャッチしてから、CSSを使用してサイズを微調整できます

于 2013-02-16T09:23:35.707 に答える