-
- // これを php 画像生成コードの上に置きます:
- session_start();
- header("Cache-Control: private, max-age=10800, pre-check=10800");
- header("Pragma : private");
- header("Expires: " . date(DATE_RFC822,strtotime(" 2 day")));
コードをコピー
header("Content-type: image/jpeg") に追加; このコードは、現在のページのキャッシュ時間 (2 日) を指定し、次回のアクセス時にこのキャッシュ時間ノードを使用します。
次に、キャッシュが既に存在するかどうかを確認し、存在する場合はそのキャッシュを使用します。
状況 1: ブラウザーが現在のページを既にキャッシュしている場合は、それを直接使用します。
-
- // キャッシュされたコピーがある場合、ブラウザは $_SERVER['HTTP_IF_MODIFIED_SINCE'] を送信します
- if(isset($_SERVER['HTTP_IF_MODIFIED_SINCE'])){
- // ブラウザにキャッシュされたコピーがある場合この画像のバージョンを送信するには、304
- header('Last-Modified: '.$_SERVER['HTTP_IF_MODIFIED_SINCE'],true,304);
- exit;
- }
コードをコピー
ケース 2: ブラウザーはキャッシュされていますが、現在のページの画像情報は更新されていますが、ソース画像自体は変更されていません。以前のキャッシュを使用したい場合は、キャッシュも使用する必要があります。
-
- $img = "some_image.png";
- if (isset($_SERVER['HTTP_IF_MODIFIED_SINCE']) && (strtotime($_SERVER['HTTP_IF_MODIFIED_SINCE']) == filemtime($img))) {
- // ファイルの最終更新時刻を送り返します
- header('Last-Modified: '.gmdate('D, d M Y H:i:s', filemtime($img)).' GMT',true, 304) ;
- exit;
- }
コードをコピー
もちろん、考慮しなければならない特別な状況がいくつかあります。それらをすべて header("Content-type: image/jpeg") の上に置くことを忘れないでください。
例:
-
- //画像のサイズを変更
- /**
- *画像の比例リサイズの原則:
- *1. 元の画像のサイズがターゲットサイズ以下であるかどうかを比較し、その場合は、元の画像の幅と高さを直接使用します。元の画像のサイズがターゲット サイズを超えている場合は、元の画像の高さのサイズ
- *3 を比較します。例: 幅 > 高さの場合、幅 = ターゲットの幅、高さ = ターゲットの幅 * 元の高さの比率
- *4。例: 高さ > 幅、高さ = ターゲットの高さ、幅 = ターゲットの高さ スケール* 元の幅
- **/ bbs.it-home.org
-
- $image = "test.jpg";
- $max_width = 200;
- $ max_height = 200;
-
- $size = getimagesize($image); //画像のサイズを取得します
- $width = $size[0];
-
- $x_ratio = $max_width / $width;
- $y_ratio = $max_height / $height;
-
- if (($width <= $max_width) && ($height <= $max_height))
- {
- $tn_width = $width;
- $tn_height = $height;
- }
- elseif (($x_ratio * $height) < $max_height)
- {
- $tn_height = ceil($x_ratio * $height);
- $tn_width = $max_width;
- }
- else
- {
- $ tn_width = ceil($y_ratio * $width);
- $tn_height = $max_height;
- }
-
- $src = imagecreatefromjpeg($image);
- $dst = imagecreatetruecolor($tn_width, $tn_height); //新規作成true color 画像
- imagecopyresampled($dst, $src, 0, 0, 0, 0,$tn_width, $tn_height, $width, $height); // 画像の一部をリサンプルしてコピーし、サイズを変更します
- header('Content-タイプ: image /jpeg');
- imagejpeg($dst,null,100);
- imagedestroy($src);
- imagedestroy($dst);
- ?>
-
-
コードをコピー
|