-
-
/** - *
- * @著者 zhao jinhan
- * @日付 2014 年 1 月 13 日 11:54:30
- * @email xb_zjh@126.com
- *
- */
- header('Content-type:text/html; charset=utf-8');
- //サムネイルの幅を定義します。と高さ
- define('THUMB_WIDTH',300);
- define('THUMB_HEIGHT',300);
- /**
- * アップロードされたファイル名を再生成します
- * @return string
- * @author zhao jinhan
- *
- */
- function _file_type($filetype = null){
- switch($filetype)
- {
- case "image/jpeg":
- $fileextname = "jpg";
- case "image/gif":
- $fileextname = " png";
- break;
- デフォルト:
- $fileextname = false;
- break;
- }
- return $fileextname?date('YmdHis',time()).'.'.$fileextname:false;
- }
- /* *
- *
- * @param string $filename
- * @param string $width
- * @param string $height
- * @param string $quality
- * @param string $savepath
- * @return boolean
- */
- function _make_thumb($filename='', $width=THUMB_WIDTH, $height=THUMB_HEIGHT, $savepath='./upload'){
- if(file_exists($filename)){
- //アップロード画像サイズ
- $imagesize=getimagesize($filename);
- $imageheight=$imagesize[1];
- $mime = $imagesize['mime'];比率
- $ratio = $imagewidth/$imageheight;
- //新しい背景画像を作成します
- $bgimg = imagecreatetruecolor($width, $height);
- $white = imagecolorallocate($bgimg, 255, 255, 255); / 背景色を白に塗りつぶします
- imagefill($bgimg,0,0,$white);
- if($mime == 'image/gif'){
- $im = @imagecreatefromgif($filename); open * /
- $outfun = 'imagegif';
- }elseif($mime == 'image/png'){
- $im = @imagecreatefrompng($filename) /* 開こうとします */
- $outfun = 'imagepng ';
- }else{
- $im = @imagecreatefromjpeg($filename); /* 開こうとします */
- $outfun = 'imagejpeg';
- }
- if($ratio > 1){
- //幅はより大きい
- if ($imagewidth > height-$new_height)/2));
- imagecopyresampled($bgimg, $im, 0, $bg_y, 0, 0, $new_width, $new_height, $imagewidth, $imageheight); else{
- //画像をコピー 背景画像に移動
- $copy = true;
- }else{
- //高さが大きくなります
- if($imageheight > $height){
- //画像を拡大縮小します
- $ new_height = $height;
- $new_width = ($height*$imagewidth)/$imageheight;
- $bg_x = ceil(($width-$new_width)/2); , 0, 0, $new_width, $new_height , $imagewidth, $imageheight);
- }else{
- //画像を背景画像にコピーします
- }
- }
- if($copy){
- //画像を背景画像にコピー
- $bg_x = ceil(($width-$imagewidth)/2)
- $bg_y = ceil(($height-$imageheight)/2); im, $bg_x, $bg_y, 0, 0, $imagewidth, $imageheight);
- $ext = _file_type($mime); imagedestroy($bgimg);
- return $savepath;
- }else{
- }
- }
- $size = $_POST['size']?strtoupper (trim($_POST['size'])) :'2M';
- $imgsize = $_FILES['img']['size']?$_FILES['img']['size']/(1024* 1024):0;
- $imgwidth = $imgheight = $_POST['width-height']?intval($_POST['width-height']):300;
- //カスタマイズされたファイルのアップロード サイズ
- ini_set('upload_max_filesize') ,$size);
- $mathsize = str_replace ('M','',$size){
- if($imgsize>$mathsize){
- echo "画像サイズは {$size} を超えてはなりません!"; ;
- }
- if($file_name = _file_type($ _FILES['img']['type'])){
- if($_FILES['img']['error'] == UPLOAD_ERR_OK){
- $savepath = 'upload/';
- if(!is_dir($savepath)){
- mkdir($savepath,0644)
- }
- //サムネイルを生成
- $thumb_file = _make_thumb($_FILES['img']['tmp_name'] , $imgwidth, $imgheight, $savepath);
- //move_uploaded_file($_FILES['img']['tmp_name'],$savepath.$file_name);
- echo "生成された画像は次のとおりです: ";
- }else{
- echo $_FILES['img']['error'];
- return;
- }
- }else{
- echo "画像の形式が正しくありません。 jpg、gif、png 形式をアップロードしてください!";
- return;
- }
}else{
- echo <<
- -equiv="Content-Type" content="text/html; charset=utf-8">
- 画像を拡大縮小して正方形に保存します body>
- =" file" name="img" />
サムネイルの幅と高さを生成します (ピクセル単位): type="text " name="width-height" value="300" />
- ="text" name="size" value="2M" />
;/div>
|