ホームページ  >  記事  >  バックエンド開発  >  PHP は画像をアップロードするときにサムネイルを自動的に生成します_PHP チュートリアル

PHP は画像をアップロードするときにサムネイルを自動的に生成します_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-13 10:46:07875ブラウズ

小さな画像を生成する機能の実装コード。それぞれに詳細な説明パラメータがあります。

コードは次のとおりです コードをコピー




<入力タイプ='送信' 名前='サブ' 値='送信'>

uploads.php ファイル

クラスイメージ_アップロード{
private $srcimg; //オリジナル画像
private $destimg; // ターゲット画像
private $width; //元の画像の幅
private $height; //元の画像の高さ
private $type; //元のファイルの画像タイプ
private $thumb_width //サムネイルの幅
private $thumb_height; //サムネイルの高さ
private $cut; //画像を指定した高さにカットするかどうか
private $tmp; //写真アップロード用の一時アドレス
プライベート $error;
private $im //一時的な画像ハンドルを作成します
private $new_name; //アップロードされたファイルの新しい名前

function __construct($srcimg,$t_width,$t_height,$cut,$tmp,$error){
$this->srcimg=$srcimg;
$this->thumb_width=$t_width;
$this->親指の高さ=$t_高さ;
$this->cut=$cut;
$this->tmp=$tmp;
$this->error=$error;
$this->get_srcimg_type();
$this->get_new_upload_name();

}

関数 img_upload(){
//ファイルのアップロード方法
$this->check_error($this->error);
$this->in_type();
$dst_dir='./images';
if(!is_dir($dst_dir)){
mkdir($dst_dir);
エコー "%%%
";
}

if(is_uploaded_file($this->tmp)){
If(move_uploaded_file($this->tmp, $this->new_name)){
echo "ファイルは正常にアップロードされました
";
true を返します;
}その他{
echo 'ファイルを移動できません。アップロードに失敗しました';
終了します;
}
}その他{
echo 'ファイルのアップロードは攻撃されている可能性があります';
終了します;
}

}

関数 make_thumbnail(){
//サムネイルを生成するメソッド
$this->get_dest_imgpath();
$this->make_im();
$this->width=imagesx($this->im);
$this->height=imagesy($this->im);

$thumb_ratio=$this->親指の幅/$this->親指の高さ;
$ratio=$this->幅/$this->高さ;


if($this->cut==1){ //トリミングするかどうか
If($ratio>=$thumb_ratio){
$img=imagecreatetruecolor($this->thumb_width, $this->gt;thumb_height);
imagecopyresampled($img, $this->im, 0, 0, 0, 0, $this->thumb_width, $this->thumb_height, $this->height*$thumb_ratio, $this->height );
Imagejpeg($img,$this->destimg); echo "サムネイルが正常に生成されました";
}その他{
$img=imagecreatetruecolor($this->thumb_width, $this->gt;thumb_height);
imagecopyresampled($img, $this->im, 0, 0, 0, 0, $this->thumb_width, $this->thumb_height, $this->width, $this->width/$thumb_ratio );
Imagejpeg($img,$this->destimg); echo "サムネイルが正常に生成されました"; }
}その他{
if($ratio>=$thumb_ratio){
$img=imagecreatetruecolor($this->thumb_height*$thumb_ratio, $this->thumb_height);
imagecopyresampled($img, $this->im, 0, 0, 0, 0, $this->thumb_height*$thumb_ratio, $this->thumb_height, $this->width, $this->height );
Imagejpeg($img,$this->destimg); echo "サムネイルが正常に生成されました";
}その他{
$img=imagecreatetruecolor($this->thumb_width, $this->gt;thumb_width/$thumb_ratio);
imagecopyresampled($img, $this->im, 0, 0, 0, 0, $this->thumb_width, $this->thumb_width/$thumb_ratio, $this->width, $this->height );
Imagejpeg($img,$this->destimg); echo "サムネイルが正常に生成されました";
}
}
imagedestroy($this->im);
imagedestroy($img);
}

プライベート関数 check_error($error){
// ファイルのアップロード エラーをチェックします;
if($error>0){
スイッチ($error){
ケース 1:
echo "アップロードされたファイルのサイズが PHP.INI ファイルの設定を超えています
";
休憩
ケース 2:
echo "アップロードされたファイルのサイズがフォームの制限を超えています
";
休憩
ケース 3:
echo "一部のファイルのみがアップロードされました
";
休憩
ケース4:
echo "アップロードされたファイルはありません
";
休憩
ケース6:
echo "php.ini
には画像ストレージに関する一時的な不明な設定はありません";
休憩
ケース7:
echo "ハードディスクに書き込むことができず、アップロードに失敗しました
";
休憩
デフォルト:
echo "不明なエラー";
休憩
}
}
}

プライベート関数 get_srcimg_type(){
//ソースファイルの画像タイプを決定します
$this->type=substr(strrchr($this->srcimg, '.'),'1');
}

プライベート関数 in_type(){
// ファイルの種類が一致するかどうかを確認します
$type_arr=array('gif','jpg','png');
if(!in_array($this->type, $type_arr)){
echo "PNG、GIF、JPG の 3 種類のファイル形式のみをサポートしています...正しい形式を再アップロードしてください";
終了します;
}
}

プライベート関数 get_new_upload_name(){
//アップロードされたファイルの新しい名前を生成します
$this->new_name='images/'.date('YmdHis').'.'.$this->type;

}
プライベート関数 make_im(){
//元のファイルから新しい画像を作成します
スイッチ($this->type){
ケース「jpg」:
$this->im=imagecreatefromjpeg($this->new_name);
休憩
ケース「gif」:
$this->im=imagecreatefromgif($this->new_name);
休憩
ケース「png」:
$this->im=imagecreatefrompng($this->new_name);
休憩
}
}
プライベート関数 get_dest_imgpath(){
//サムネイルの保存パスを取得します
$len1=strlen($this->new_name);
$len2=strlen(strrchr($this->new_name,'.'));
$len3=$len1-$len2;
$this->destimg=substr($this->new_name,0,$len3).'_small.'.$this->type;
}

}
print_r($_FILES);
$file=$_FILES['画像'];
echo $file['name'];
$uploads=new image_upload($file['name'], 120, 160, 1, $file['tmp_name'],$file['error'] );
if($uploads->img_upload()){
$uploads->make_thumbnail();
}

?>


www.bkjia.com本当http://www.bkjia.com/PHPjc/632970.html技術記事小さな画像を生成する機能を実装した実装コードには、詳細な説明パラメータが含まれています。 コードは次のとおりです。 action=uploads.php method=pos... のコードをコピーします。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。