-
-
function CreateImage($SrcImageUrl, $DirImageUrl, $Width, $Height)
- {
- $img;
- $srcw;
- $new_width;
- $srch;
- $new_height;
- //画像の種類
- $type = substr(strrchr($SrcImageUrl, "."), 1);
- // 初期化画像
- if($type == "jpg")
- $img = imagecreatefromjpeg($SrcImageUrl);
- if($type == "gif")
- $img = imagecreatefromgif($SrcImageUrl);
- if($type == "png")
- $img = imagecreatefrompng($SrcImageUrl);
$srcw = imagex($img);
- $srch = imagey($img);
if ($srcw / $srch > $Width / $Height)
- {
- if ($srcw > $Width)
- {
- $new_width = $Width;
- $new_height = $srch * ($Width / $srcw);
- }
- else
- {
- $new_width = $srcw;
- $new_height = $srch;
- }
- }
- else
- {
- if ($srch > $Height)
- {
- $new_height = $Height;
- $new_width = $srcw * ($Height / $srch);
- }
- else
- {
- $new_width = $srcw;
- $new_height = $srch;
- }
- } p>
$new_image = imagecreatetruecolor($new_width, $new_height);
- imagecopyresampled($new_image, $img, 0, 0, 0, 0, $new_width, $new_height, $srcw, $srch);
- imagejpeg($new_image, $DirImageUrl);
imagedestroy($img);
- imagedestroy($new_image);
- }
-
复制代
3. 改善されたコード:
-
-
- /*
*$o_photo 元画像パス
*$d_photo 処理画像パス< /p>
*$width 幅を定義します
*$height 高さを定義
*メソッドcutphoto("test.jpg ","temp. jpg",256,146);
*/
関数cutphoto($o_photo,$d_photo,$width,$height){
-
$temp_img = imagecreatefromjpeg($o_photo);
$o_width = imagex($temp_img); //元の画像の幅を取得します
$o_height; = imagey($temp_img); //元の画像の高さを取得します
//加工方法を判断します
if($width>$o_width || $height> $o_height){//元の画像の幅または高さが指定されたサイズより小さいため、圧縮されています
$newwidth=$o_width;
newheight=$o_height;
if($o_width>$width){
$newwidth=$width;
}
if($newheight>$height){
- < ; p>$newwidth=$newwidth*$height/$newheight;
$newheight=$height;
}
- < ;//サムネイル画像
$new_img = imagecreatetruecolor($newwidth, $newheight);
imagecopyresampled($new_img, $temp_img, 0, 0 , 0, 0, $newwidth, $newheight, $o_width, $o_height);
imagejpeg($new_img , $d_photo);
imagedestroy($new_img);
}else{//元の画像の幅と高さが指定したサイズより大きいため、圧縮してトリミングします
if($o_height*$width /$ o_width>$height){// まず、幅が仕様と同じであることを確認します。高さが仕様より大きい場合は、ok
$newwidth=$width; p>
$newheight=$o_height*$width/$o_width;
$x=0;
$y=($newheight -$height)/2;
}else{ // それ以外の場合は、高さが指定と同じであり、幅が適応されていることを確認してください
$newwidth =$o_width*$height/$o_height; p>
$newheight=$height;
$x=($newwidth-$width)/2;< ;/p>
$y=0 ;
}
//サムネイル画像
$new_img = imagecreatetruecolor($newwidth, $newheight);< ;/p>
imagecopyresampled($new_img, $temp_img, 0, 0, 0, 0, $newwidth, $newheight, $o_width, $o_height);< ;/p>
imagejpeg( $new_img , $d_photo);
imagedestroy($new_img);
$temp_img = imagecreatefromjpeg($ d_photo);
- < p>$o_width = imagex($temp_img); //サムネイルの幅を取得します
$o_height = imagey($temp_img);サムネイルの高さ
- < p>//画像をトリミング
$new_imgx = imagecreatetruecolor($width,$height);
imagecopyresampled($ new_imgx,$temp_img,0,0, $x,$y,$width,$height,$width,$height);
imagejpeg($new_imgx , $d_photo); p>
imagedestroy( $new_imgx);
- }
- }
- ?>
-
-
コードをコピー
|