php 图片上传代码(具有生成缩略图与增加水印功能)_PHP教程
这款图片上传源代码是一款可以上传图片并且还具有给上传的图片生成缩略图与增加水印功能哦,可以说是一款完美的图片上传类哦。
php教程 图片上传代码(具有生成缩略图与增加水印功能)
这款图片上传源代码是一款可以上传图片并且还具有给上传的图片生成缩略图与增加水印功能哦,可以说是一款完美的图片上传类哦。
class upfile {
public $filepath = "www.bKjia.c0m/"; //上传文件存放文件夹public $filesize = 1000000; //允许上传的大小
//如果要修改允许上传文件的类型 请搜索 【 switch ($upfiletype) { //文件类型 】
public $reimagesize = array (
true, //是否生成缩略图
400, //缩略图宽
300,//缩略图高
"" //缩略图存放文件夹 如果为空和当前要生成缩略图的文件在同一目录 文件前缀r_
); //是否生成缩略图 array(生成或不生成,缩略图宽,缩略图高,存放文件夹); 注意:存放文件夹后跟 '/'public $india = true; //是否打水印 true打 false不打
public $indiaimage = ""; //水印图片地址为空则不打图片水印 如果有文字水印建议不要开启图片水印
public $indiaimagex = 100; //图片距离图片左边距离
public $indiaimagey = 10; //图片距离图片上面距离
public $indiatext = "www.bKjia.c0m"; //水印文字
public $fontsize = 6; //水印文字大小,1最小6最大
public $indiatextx = 10; //文字距离图片左边距离
public $indiatexty = 10; //文字距离图片上面距离
public $r = 250; //图片颜色三原色 $r红
public $g = 250; //$g绿
public $b = 250; //$b蓝
public $indiapath = ""; //加了水印的图片保存路径,如果为空就直接替代原来的图片
//开始上传处理
function uploadfile($upfile) {
if ($upfile == "") {
die("uploadfile:参数不足");
}
if (!file_exists($this->filepath)) {
mkdir($this->filepath);
}
$upfiletype = $upfile['type'];
$upfilesize = $upfile['size'];
$upfiletmpname = $upfile['tmp_name'];
$upfilename = $upfile['name'];
$upfileerror = $upfile['error'];
if ($upfilesize > $this->filesize) {
return false; //文件过大
}
switch ($upfiletype) { //文件类型
case 'image/jpeg' :
$type = 'jpg';
break;
case 'image/pjpeg' :
$type = 'jpg';
break;
case 'image/png' :
$type = 'png';
break;
case 'image/gif' :
$type = 'gif';
break;
}
if (!isset ($type)) {
return false; //不支持此类型
}
if (!is_uploaded_file($upfiletmpname) or !is_file($upfiletmpname)) {
return false;
; //文件不是经过正规上传的;
}
if ($this->upfileerror != 0) {
return false; //其他错误
}
if ($this->upfileerror == 0) {
if (!file_exists($upfiletmpname)) {
return false; //临时文件不存在
} else {
$filename = date("ymdhis", time() + 3600 * 8); //图片已当前时间命名
$filename = $this->filepath . $filename . "." . $type;
if (!move_uploaded_file($upfiletmpname, $filename)) {
return false; //文件在移动中丢失
} else {
if ($this->india == true) {
$this->goindia($filename, $type,true);
} else {
if ($this->reimagesize[0] == true) {
$this->goreimagesize($filename, $type);
} else {
return true; //上传成功!
unlink($upfiletmpname);
}
}
}}
}}
//添加水印处理
function goindia($filename, $filetype,$reimage=false) {
if (!file_exists($filename)) {
$this->reerror(7); //要添加水印的文件不存在
} else {
if ($filetype == "jpg") {
$im = imagecreatefromjpeg($filename);
} else
if ($filetype == "gif") {
$im = imagecreatefromgif($filename);
} else
if ($filetype == "png") {
$im = imagecreatefrompng($filename);
}
if ($this->indiatext != "") { //如果水印文字不为空
$textcolor = imagecolorallocate($im, $this->r, $this->g, $this->b); //设置文字颜色
imagestring($im, $this->fontsize, $this->indiatextx, $this->indiatexty, $this->indiatext, $textcolor); //将文字写入图片
}
if ($this->indiaimage != "") {//如果水印图片不为空
$indiaimagetype = getimagesize($this->indiaimage);
$logow = $indiaimagetype[0]; //得到水印图片的宽
$logoh = $indiaimagetype[1]; //得到水印图片的高
switch ($indiaimagetype[2]) { //判断水印图片的格式
case 1 :
$indiaimagetype = "gif";
$logo = imagecreatefromgif($this->indiaimage);
break;
case 2 :
$indiaimagetype = "jpg";
$logo = imagecreatefromjpeg($this->indiaimage);
break;
case 3 :
$indiaimagetype = "png";
$logo = imagecreatefrompng($this->indiaimage);
break;
}
imagealphablending($im, true); //打开混色模式
imagecopy($im, $logo, $this->indiaimagex, $this->indiaimagey, 0, 0, $logow, $logoh);
imagedestroy($im);
imagedestroy($logo);
}
}
if ($this->indiapath == "") { //如果水印存放地址不为空
if ($filetype == "jpg") {
imagejpeg($im, $filename);
} else
if ($filetype == "gif") {
imagegif($im, $filename);
} else
if ($filetype == "png") {
imagepng($im, $filename);
}
if($reimage == true){
$this->goreimagesize($filename,$filetype);
}else{
return true; //添加水印成功
}
} else {
if (!file_exists($this->indiapath)) {
mkdir($this->indiapath);
return false; //请重新上传
} else {
$indianame = basename($filename);
$indianame = $this->indiapath . $indianame;
if ($filetype == "jpg") {
imagejpeg($im, $indianame);
} else
if ($filetype == "gif") {
imagegif($im, $indianame);
} else
if ($filetype == "png") {
imagepng($im, $indianame);
}
if($reimage == true){
$this->goreimagesize($indianame,$filetype);
echo $indianame;
}else{
return true; //添加水印成功
}
}
}
}
function goreimagesize($filename, $filetype) {
if (!file_exists($filename)) {
return false; //要生成缩略图的图片不存在
} else {
if ($filetype == 'jpg') {
$reimage = imagecreatefromjpeg($filename);
}
elseif ($filetype == 'png') {
$reimage = imagecreatefrompng($filename);
} else
if ($filetype == 'gif') {
$reimage = imagecreatefromgif($filename);
}
if (isset ($reimage)) {
$srcimagetype = getimagesize($filename);
$srcimagetypew = $srcimagetype[0]; //得到原始图片宽度
$srcimagetypeh = $srcimagetype[1]; //得到原始图片高度
$reim = imagecreatetruecolor($this->reimagesize[1], $this->reimagesize[2]);
imagecopyresized($reim, $reimage, 0, 0, 0, 0, $this->reimagesize[1], $this->reimagesize[2], $srcimagetypew, $srcimagetypeh);
$reimagepath = $this->reimagesize[3];
if ($reimagepath != "") { //如果存放水印地址不为空
if (!file_exists($reimagepath)) {
mkdir($reimagepath);
} else {
$reimagename = basename($filename);
$reimagename = $reimagepath . "r_" . $reimagename;
if ($filetype == "gif")
imagegif($reim, $reimagename);
else
if ($filetype == "jpg")
imagejpeg($reim, $reimagename);
else
if ($filetype == "png")
imagepng($reim, $reimagename);
return true;
}
} else {
$filename = basename($filename);
if($this->indiapath == ""){
$filename = $this->filepath."r_" . $filename;
}else{
$filename = $this->indiapath."r_" . $filename;
}
if ($filetype == "gif")
imagegif($reim, $filename);
else
if ($filetype == "jpg")
imagejpeg($reim, $filename);
else
if ($filetype == "png")
imagepng($reim, $filename);
return true;
}}
}
}}
if ($_post["submit"]) {
$file = $_files['uploadfile'];
$upfile = new upfile();
echo $upfile->uploadfile($file);
}
?>

Dalam PHP, sifat sesuai untuk situasi di mana penggunaan semula kaedah diperlukan tetapi tidak sesuai untuk warisan. 1) Ciri membolehkan kaedah multiplexing dalam kelas untuk mengelakkan pelbagai kerumitan warisan. 2) Apabila menggunakan sifat, anda perlu memberi perhatian kepada konflik kaedah, yang dapat diselesaikan melalui alternatif dan sebagai kata kunci. 3) Tua yang berlebihan harus dielakkan dan tanggungjawab tunggalnya harus dikekalkan untuk mengoptimumkan prestasi dan meningkatkan pemeliharaan kod.

Kontena Suntikan Ketergantungan (DIC) adalah alat yang menguruskan dan menyediakan kebergantungan objek untuk digunakan dalam projek PHP. Manfaat utama DIC termasuk: 1. Decoupling, membuat komponen bebas, dan kod itu mudah dikekalkan dan diuji; 2. Fleksibiliti, mudah untuk menggantikan atau mengubah suai kebergantungan; 3. Keseluruhan, mudah untuk menyuntik objek mengejek untuk ujian unit.

SplfixedArray adalah pelbagai saiz tetap dalam PHP, sesuai untuk senario di mana prestasi tinggi dan penggunaan memori yang rendah diperlukan. 1) Ia perlu menentukan saiz apabila membuat untuk mengelakkan overhead yang disebabkan oleh pelarasan dinamik. 2) Berdasarkan pelbagai bahasa C, secara langsung mengendalikan memori dan kelajuan akses cepat. 3) Sesuai untuk pemprosesan data berskala besar dan persekitaran sensitif memori, tetapi ia perlu digunakan dengan berhati-hati kerana saiznya tetap.

PHP mengendalikan fail muat naik melalui pembolehubah fail $ \ _. Kaedah untuk memastikan keselamatan termasuk: 1. Semak kesilapan muat naik, 2. Sahkan jenis dan saiz fail, 3. Mencegah penindasan fail, 4. Pindahkan fail ke lokasi storan tetap.

Dalam JavaScript, anda boleh menggunakan NullcoalescingOperator (??) dan NullcoalescingAssignmentOperator (?? =). 1.? Menerapkan semula operan pertama yang tidak berselisih atau tidak ditentukan. 2.?? Pengendali ini memudahkan logik kod, meningkatkan kebolehbacaan dan prestasi.

CSP adalah penting kerana ia boleh menghalang serangan XSS dan mengehadkan pemuatan sumber, meningkatkan keselamatan laman web. 1.CSP adalah sebahagian daripada tajuk tindak balas HTTP, mengehadkan tingkah laku berniat jahat melalui dasar yang ketat. 2. Penggunaan asas adalah untuk hanya membenarkan sumber pemuatan dari asal yang sama. 3. Penggunaan lanjutan boleh menetapkan lebih banyak strategi halus, seperti membenarkan nama domain tertentu untuk memuat skrip dan gaya. 4. Gunakan header-surcury-policy-report-only header untuk debug dan mengoptimumkan dasar CSP.

Kaedah permintaan HTTP termasuk GET, POST, PUT dan DELETE, yang digunakan untuk mendapatkan, menghantar, mengemas kini dan memadam sumber masing -masing. 1. Kaedah GET digunakan untuk mendapatkan sumber dan sesuai untuk operasi membaca. 2. Kaedah Pos digunakan untuk menyerahkan data dan sering digunakan untuk membuat sumber baru. 3. Kaedah Put digunakan untuk mengemas kini sumber dan sesuai untuk kemas kini lengkap. 4. Kaedah Padam digunakan untuk memadam sumber dan sesuai untuk operasi penghapusan.

HTTPS adalah protokol yang menambah lapisan keselamatan berdasarkan HTTP, yang terutamanya melindungi privasi pengguna dan keselamatan data melalui data yang disulitkan. Prinsip kerjanya termasuk jabat tangan TLS, pengesahan sijil dan komunikasi yang disulitkan. Apabila melaksanakan HTTPS, anda perlu memberi perhatian kepada pengurusan sijil, kesan prestasi dan isu kandungan campuran.


Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Pelayar Peperiksaan Selamat
Pelayar Peperiksaan Selamat ialah persekitaran pelayar selamat untuk mengambil peperiksaan dalam talian dengan selamat. Perisian ini menukar mana-mana komputer menjadi stesen kerja yang selamat. Ia mengawal akses kepada mana-mana utiliti dan menghalang pelajar daripada menggunakan sumber yang tidak dibenarkan.

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Muat turun versi mac editor Atom
Editor sumber terbuka yang paling popular

SublimeText3 versi Inggeris
Disyorkan: Versi Win, menyokong gesaan kod!

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma