1. iamge 処理クラスを作成します
date_default_timezone_set('PRC');
protected $InputImageFileExtension; getInstance() { $instance; $instance を返します。 ($fileparam, $imageparam) {
$newW = $imageparam['imageW'];
$newH = $imageparam['imageH'];
$this-> nameinfo =explode('.',$fileparam[' name']); imageparam ['imagename'])){ $outputFileName $outputFileName
// パスが正しいかどうかを判断する(!file_exists($imageparam['imagepath '])) {
Le i $ file_src = $ ImageParam ['ImagePath']. $ OUTPUTFILENAME. "_.". Age f If (File_exists ($ File_src))
リンクを解除($file_src); unlink($file_src); my_image_resize($file_src, $newH,$this->InputImageFileExtension);
}
}
2. 画像サイズ処理クラスを設定します。 ;?php
class ImageResize {
/*
* 説明: 画像を変形せずに任意のサイズの画像にトリミングする機能です
* パラメータの説明: 処理する画像のファイル名を入力し、新しい画像のファイル名を保存し、新しい画像の幅を生成し、新しい画像の高さを生成します
* 執筆者 smallchicken
* 時刻 2008-12-18
*/
// 任意のサイズの画像を取得します。欠落部分を引き伸ばします。変形や空白はありません
function my_image_resize($src_file, $dst_file, $new_width, $ new_height, $type) {
if ($new_width < 1 || $new_height < 1) {
echo "パラメータの幅または高さのエラー!";
exit ()
}
if (! file_exists ( $src_file ) ) {
echo $src_file . " は存在しません !";
exit ()
// 画像タイプ
$support_type = array (! in_array ( $ type, $support_type, true )) {
echo "このタイプの画像はサポートされていません! jpg、gif、または png のみをサポートします"
}
//画像をロード
switch ($type) {
case "jpg" :
$src_img = imagecreatefromjpeg ( $src_file );
case "png" :
$src_img = imagecreatefrompng ( $src_file );
case "gif" :
$src_img = imagecreatefromgif ( $src_file ) );
デフォルト :
終了 ();
$w = images ( $src_img ); if($w < $new_width && $h < $new_height){
// アスペクト比がターゲット要件を満たす中間一時画像を定義します
$inter_w = $w = $h ; = imagecreatetruecolor ( $inter_w, $inter_h );
imagecopy ( $inter_img, $src_img, 0, 0, 0, 0, $inter_w, $inter_h ); // 最大辺の長さをサイズとして画像を生成しますターゲット画像の一時画像 $ratio 比率
// 新しい画像を定義します
$new_img = imagecreatetruecolor ( $inter_w, $inter_h );
imagecopyresampled ( $new_img, $inter_img, 0, 0, 0, 0, $inter_w, $inter_w, $inter_h, $inter_h );
switch ($type) {
case "jpg" :
imagejpeg ( $new_img, $dst_file, 100 ) // 画像を保存
case "png" :
imagepng ( $new_img, $dst_file, 100 );
case "gif" :
default :
die();
////
$ratio_w = 1.0 * $new_width / $w;
$ratio_h = 1.0 * $new_height / $h;
$ratio = 1.0; 生成された画像の高さと幅は、オリジナル、または両方が大きい場合、原則として、拡大には大きな比率を使用し、縮小には大きな比率を使用します (縮小された比率は小さくなります)
if (($ratio_w < 1 && $ratio_h < 1) | | ($ratio_w > 1 && $ratio_h > 1)) {
if ($ratio_w $ratio = $ratio_h // ケース 1、幅の比率が高さ方向より小さい、トリミングまたは高さの比率標準に従って拡大します
} else {
$ratio = $ratio_w;
}
// アスペクト比がターゲット要件を満たす中間一時画像を定義します
$inter_w = ( int ) ($new_width / $ratio );
$inter_h = ( int ) ($new_height / $ratio);
$inter_img = imagecreatetruecolor ( $inter_w, $inter_h );
imagecopy ( $inter_img, $src_img, 0, 0, 0, $inter_w, $inter_h );
/ / ターゲット画像として最大の辺の長さをもつ一時画像を生成します $ratio 比
// 新しい画像を定義します
$new_img = imagecreatetruecolor ( $new_width, $new_height );
imagecopyresampled ( $new_img, $ inter_img, 0 , 0, 0, 0, $new_width, $new_height, $inter_w, $inter_h );
switch ($type) {
case "jpg" :
imagejpeg ( $new_img, $dst_file, 100 );画像を保存します
case "png" :
imagepng ( $new_img, $dst_file, 100 );
imagegif ( $new_img, $dst_file, 100 );
break;
}
} else {
// end if 1
// 2 対象画像の片側が元の画像より大きく、片側が元の画像より小さい。トリミングします
// =if( ($ratio_w $ratio = $ratio_h > $ratio_h ? : $ratio_w; // 比率が大きい方の値を取得します
// 高さまたは幅がターゲット画像と等しい大きな中間画像を定義し、元の画像を拡大します
$inter_w = ( int ) ($w * $ rate);
$inter_h = ( int ) ($h * $ratio);
$inter_img = imagecreatetruecolor ( $inter_w, $inter_h );
//元の画像をスケーリング後にトリミングします
imagecopyresampled ( $inter_img, $src_img, 0, 0, 0, 0, $inter_w, $inter_h , $w, $h );
// 新しい画像を定義します
$new_img = imagecreatetruecolor ( $new_width, $new_height );
imagecopy ( $new_img, $inter_img, 0, 0, 0, 0, $new_width, $new_height );
switch ($type) {
case "jpg" :
imagejpeg ( $new_img, $dst_file, 100 ); // 画像を保存
break; png" :
imagepng ( $new_img, $dst_file, 100 );
break;
case "gif" :
imagegif ( $new_img, $dst_file, 100 );
break;
default :
}
} // 関数の終了
?>
3.
include "../../tools/Image/Image.class.php";
$array = $_FILES['photo'];
//等倍化パラメータ
$resizeParam = array (
'imagepath' => 'd:/xampp/www/', //画像ストレージパス
'imageW' => 200, //画像ストレージパス
'imageH' => 200 //画像ストレージパス
) ;
if (!empty ($array)) {
Image :: getInstance()->uploadresize($array, $resizeParam);
?>
;body>