connet.lolipop.jp
「登録」ページの「画像回転」操作によるデータの送受信
inrotate.js
/** 
 * 「登録」ページの「画像回転」操作によるデータの送受信(非同期通信)
 */
	     
function imgrotate(img_form, convert) {	
  // メッセージ
  if (document.getElementById("inp_imagename").value == '') {
    document.getElementById("reaction").innerHTML = '画像データ入力は必須です!。';
    return;
  }
  
  // レスポンスエリアをクリア
  document.getElementById("reaction").innerHTML = ' ';
  document.getElementById("imageshow").innerHTML = '';	
  
  // フォームオブジェクトを作成
  var img_form = document.getElementById(img_form);
  rotate_data = new FormData(img_form);
  
  // file読込み時
  if (convert == 'newfile') {
    angle = 0;
    // フォームにrotateフィールドを追加
    rotate_data.append("rotate", angle);
  }
  
  // 回転角度を設定
  if (convert == 'r_rotate') {		
    angle -= 90;
    if (angle == -360) {
    	angle = 0;
    }	
    // フォームにrotateフィールドを追加
    rotate_data.append("rotate", angle);
  } else if (convert == 'l_rotate') {		
    angle += 90;
    if (angle == 360) {
    	angle = 0;
    }
    // フォームにrotateフィールドを追加
    rotate_data.append("rotate", angle);
  }
  
  if (rotate_data == "") {	
      return;
  } else {    
    // サーバーとの通信を形成してオブジェクトを作成
    var xhr = new XMLHttpRequest();
    xhr.onload = function (e) {
      if (xhr.readyState == 4) {
        if (xhr.status == 200) {
          // 送信元のid属性名の指定タグへリクエスト結果を返す
          document.getElementById("imageshow").innerHTML = xhr.responseText;
        } else {
          alert('Request Error');
        }
      }
    };
    xhr.onerror = function (e) {
      alert('Network Error');
    };        
     
    // リクエスト先に非同期で処理を指定
    xhr.open("POST", "inimagerotate.php", true);
    // フォームオブジェクトをPOSTで送信
    xhr.send(rotate_data);
  }
}
登録データの送受信
insert.js
/**
 * 登録データの送受信(非同期通信)
 */
	    
function form_insert(form_id) {	
  var formId = document.getElementById(form_id);
  // フォームオブジェクトを作成
  var insert_data = new FormData(formId); 
  
  if (insert_data == "") {
      return;
  } else {    
    // サーバーとの通信を形成してオブジェクトを作成 
    var xhr = new XMLHttpRequest();
    xhr.onload = function (e) {
      if (xhr.readyState == 4) {
        if (xhr.status == 200) {
          // 送信元のid属性名の指定タグへリクエスト結果を返す
          document.getElementById("reaction").innerHTML = xhr.responseText;
        } else {
          alert('Request Error');
        }
      }
    };
    xhr.onerror = function (e) {
      alert('Network Error');
    };
     
    // リクエスト先に非同期で処理を指定
    xhr.open("POST", "insert2.php", true);
    // フォームオブジェクトをPOSTで送信
    xhr.send(insert_data);
  }
}
「更新」ページの「画像回転」操作によるデータの送受信
uprotate.js
/**
 * 「更新」ページの「画像回転」操作によるデータの送受信(非同期通信)
 */
	    
function upimgrotate(uprotate_form, convert) {	
  // レスポンスエリアをクリア
  document.getElementById("reaction").innerHTML = '  ';
  
  // フォームオブジェクトを作成
  var obj_form = document.getElementById(uprotate_form);
  var uprotate_data = new FormData(obj_form);
  
  // 回転角度を指定
  if (convert == 'r_rotate') {
  	angle = -90;	
  	// フォームにrotateフィールドを追加
  	uprotate_data.append("uprotate", angle);
  } else if (convert == 'l_rotate') {		
  	angle = 90;
  	// フォームにrotateフィールドを追加
  	uprotate_data.append("uprotate", angle);
  }
  
  if (uprotate_data == "") {	
      return;
  } else {    
     // サーバーとの通信を形成してオブジェクトを作成
     var xhr = new XMLHttpRequest();
     xhr.onload = function (e) {
       if (xhr.readyState == 4) {
         if (xhr.status == 200) {
           // 送信元のid属性名の指定タグへリクエスト結果を返す
           document.getElementById("uprotateimageshow").innerHTML = xhr.responseText;
         } else {
             alert('Request Error');
         }
       }
     };
     xhr.onerror = function (e) {
       alert('Network Error');
     };        
      
     // リクエスト先に非同期で処理を指定
     xhr.open("POST", "upimagerotate.php", true);
     // フォームオブジェクトをPOSTで送信
     xhr.send(uprotate_data);
  }
}
更新データの送受信
update.js
/**
 * 更新データの送受信(非同期通信)
 */
	    
function updateform(form_id) {
  var formId = document.getElementById(form_id);
  var update_data = new FormData(formId);
  
  if (update_data == "") {
      return;
  } else {    
    // サーバーとの通信を形成してオブジェクトを作成 
    var xhr = new XMLHttpRequest();
    xhr.onload = function (e) {
      if (xhr.readyState == 4) {
        if (xhr.status == 200) {
          // 送信元のid属性名の指定タグへリクエスト結果を返す
          document.getElementById("reaction").innerHTML = xhr.responseText;
        } else {
          alert('Request Error');
        }
      }
    };
    xhr.onerror = function (e) {
      alert('Network Error');
    };
     
    // リクエスト先に非同期で処理を指定
    xhr.open("POST", "update2.php", true);
    // フォームオブジェクトをPOSTで送信
    xhr.send(update_data);
  }
}


プログラムの作成はこれで終了です。
PHP初期設定の確認
phpのプログラムでも画像データを扱うには大量のメモリを消費します。メモリ対策は最重要です。
そこでプログラムを実行する前に、メモリの設定などが書いてあるphp.ini(xampp/php/)ファイルを エディタで開いて、その初期の設定を確認してみて下さい。

1.upload_max_filesize
アップロードされるファイルの最大サイズを指定します。
upload_max_filesize = 2M ⇐ デフォルト

アップロードする画像ファイルサイズより大きめに、ここでは6M(任意)に変更します。
(デジカメなどの写真一枚当たり2M~4M程かな)
デフォルトをコメント(;)して次のようにサイズを変更します。
;upload_max_filesize = 2M
 upload_max_filesize = 6M

2.post_max_size
POSTデータの最大サイズを指定します。
post_max_size = 8M ⇐ デフォルト
上記1項の「upload_max_filesize」と関連があり、こちらの値をより大きくする必要があります。

3.memory_limit
プログラムで最大使用するメモリ数を指定します。
memory_limit = 128M ⇐ デフォルト

プログラムを実行した時、次のようなメモリ不足のエラーメッセージが表示された時は、デフォルト
のメモリ値を上げてみて下さい。当プログラムではデフォルト値のままでOk。
<エラーメッセージ>
Fatal error: Allowed memory size of ×××××bytes⋯⋯

以上、メモリ関連の説明です。
整理すると、 upload_max_filesize < post_max_size < memory_limit

設定値を変更した後は必ず、「XAMPP Control Panel」から「Apache」ウェブサーバーを再起動して 変更内容を有効にしてください。
-->コントロールパネル(xampp/xampp-control.exe)

また他の方法で例えば「Windows」に「Apache」アプリケーションを単独にインストールしてある
場合は、「スタート」->「コンピューターの管理」の中から「Apache」の起動・停止の操作も可
能です。

4.「imagecreatefromjpeg」関数のエラー対策
画像ファイルを登録(insert.php)する際、次のようなエラーメッセージが生じる場合があります。

”Fatal error: Uncaught Error: Call to undefined function imagecreatefromjpeg()in....."

対策はいろいろあるようですが、まず 「xampp/php/php.ini」ファイルを開いて以下のコマンドを探して下さい。
;extension=gdのようにコメントさけていれば、それを外して以下のようにします。
extension=gd
修正・更新後は有効にするため、必ずサーバーの「Apache」を再起動して下さい。
プログラムを実行する
・Webサーバー(Apach)を起動
・ブラウザを立ち上げ、アドレスバーに以下のアドレスを入力します
    http://localhost/image-Sqlite- PetitApp/
・ブラウザの更新をクリック

正常に動作したでしょうか!、プログラムには必ずバグはつきものです、根気よく挑戦してみて下さい。
Search
Google


↟ このページの先頭へ