2017-12-06 26 views
0

私は現在オンラインプロジェクトで働いています。ユーザーが自分のイメージをアップロードし、そのイメージが最初に "uploads"ディレクトリのようなサーバーフォルダに保存されます。そして、ファイルがそのuploadsディレクトリに移動すると、 mysqlクエリを使用してmysqlデータベースに挿入されます。 しかし、問題is..the画像をWebページにロードするために長い時間がかかります...私は、データベースおよびサーバーにアップロードする前に画像のサイズを小さくしたい。..php pdo mysqlのデータベースにアップロードする前に、画像の品質を落とさずに画像を圧縮する方法は?

ここに私のコードは

ある
$upload_dir = 'user_images/'; // upload directory 

     $imgExt = strtolower(pathinfo($imgFile,PATHINFO_EXTENSION)); // get image extension 

     // valid image extensions 
     $valid_extensions = array('jpeg', 'jpg', 'png', 'gif'); // valid extensions 

     // rename uploading image 
     $userpic = rand(1000,1000000).".".$imgExt; 

     // allow valid image file formats 
     if(in_array($imgExt, $valid_extensions)){   
      // Check file size '5MB' 
      if($imgSize < 1000000){ 

       move_uploaded_file($tmp_dir,$upload_dir.$userpic); 

      } 
      else{ 
       $errMSG = "Sorry, your file is too large."; 
      } 
     } 
     else{ 
      $errMSG = "Sorry, only JPG, JPEG, PNG & GIF files are allowed.";   
     } 
    } 

そして、データベースが非常に急速に成長し、5月には、パフォーマンスにつながり、将来の問題を維持する - 私のクエリは...

if(!isset($errMSG)) 
    { 


     $stmt = $user_home->runQuery("INSERT INTO cam_info (userID, 
                  cam_name, 
               cam_model, 
              pixels, 
            photoshoot, 
            cam_rent, 
            cam_img, 
            mobile, 
            state, 
            address, 
            upd_date, 
            code) 
                  VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) "); 

     $stmt->bindParam(1,$id); 
     $stmt->bindParam(2,$cam_name); 
     $stmt->bindParam(3,$modelname); 
     $stmt->bindParam(4,$pixel); 
     $stmt->bindParam(5,$photoshoot); 
     $stmt->bindParam(6,$rentpday); 
     $stmt->bindParam(7,$userpic); 
     $stmt->bindParam(8,$usermob); 
     $stmt->bindParam(9,$state); 
     $stmt->bindParam(10,$useraddrs); 
     $stmt->bindParam(11,$upd_date); 
     $stmt->bindParam(12,$ucode); 

     if($stmt->execute()) 
     { 

      $successMSG = "Record saved success"; 
     } 
     else 
     { 
      $errMSG = "error while inserting...."; 
     } 

答えて

1

は一般的に、データベースに画像をアップロードするのは良いアイデアではありません話すように見えます。

データベースを使用して画像に関するメタデータを保持し、画像をファイルシステムに保存します。異なる側面があるよう

+0

屋私見ほとんどの画面に表示するだけで罰金になり、画像の画像の最大寸法を決める考えます正確に@ ino ..私は直接データベースに画像を格納していません...私はjstストアの画像のパスthats it.but私の問題は..私jstはディレクトリをアップロードする前にサイズを縮小したい.. –

+0

その後、元のタイトルは "どのようにPHPのpdo mysqlでデータベースにアップロードする前に品質を失うことなく画像を圧縮するか? – ino

0

サイズを小さくしては非常に一般的な質問です:へ

  • すなわちバイト、ファイルシステム上のサイズを小さく
  • すなわちピクセル、次元のサイズを縮小

あなたができるバイトを減らしてください:

  • 適用圧縮 - jpg、pngに適用できます。
  • 正しい形式で画像を変換する - スクリーンショットのための写真のために、より良いPNGで画像のサイズをリサイズより良いJPG
  • ある - インターネット上で閲覧して送信するため、あなたはメガピクセルの多く
  • は数を減らす必要はありません。色
  • 削除アルファチャンネルの寸法を小さくする

を必要としない場合

  • 使用されていないが、EXIF情報を削除する場合:

    • は、デスクトップ
    • 対モバイルの画像が表示されますメインメディア、すなわち1024ピクセルまで
  • 関連する問題