支持png透明图片的php生成缩略图类分享_PHP教程
支持png透明图片的php生成缩略图类分享
这篇文章主要介绍了支持png透明图片的php生成缩略图类分享,本文代码基于GD2图形库,实现支持png透明图片生成缩略图,需要的朋友可以参考下
注:此功能依赖GD2图形库
最近要用php生成缩略图,在网上找了一下,发现了这篇文章:PHP生成图片缩略图
试用了一下后,发现有这样几个问题:
1、png图片生成的缩略图是jpg格式的
2、png图片生成的缩略图没有了透明(半透明)效果(填充了黑色背景)
3、代码语法比较老
因此,在这个版本的基础上简单修改优化了一下。
PHP生成缩略图类
?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 |
/* * desc: Resize Image(png, jpg, gif) * author: 十年后的卢哥哥 * date: 2014.11.13 */ class ResizeImage { //图片类型 private $type; //实际宽度 private $width; //实际高度 private $height; //改变后的宽度 private $resize_width; //改变后的高度 private $resize_height; //是否裁图 private $cut; //源图象 private $srcimg; //目标图象地址 private $dstimg; //临时创建的图象 private $im;
function __construct($imgPath, $width, $height, $isCut, $savePath) { $this->srcimg = $imgPath; $this->resize_width = $width; $this->resize_height = $height; $this->cut = $isCut; //图片的类型
$this->type = strtolower(substr(strrchr($this->srcimg,"."),1));
//初始化图象 $this->initi_img(); //目标图象地址 $this -> dst_img($savePath); //-- $this->width = imagesx($this->im); $this->height = imagesy($this->im); //生成图象 $this->newimg(); ImageDestroy ($this->im); }
private function newimg() { //改变后的图象的比例 $resize_ratio = ($this->resize_width)/($this->resize_height); //实际图象的比例 $ratio = ($this->width)/($this->height); if($this->cut) { //裁图 $newimg = imagecreatetruecolor($this->resize_width,$this->resize_height); if($this->type=="png") { imagefill($newimg, 0, 0, imagecolorallocatealpha($newimg, 0, 0, 0, 127)); } if($ratio>=$resize_ratio) { //高度优先 imagecopyresampled($newimg, $this->im, 0, 0, 0, 0, $this->resize_width,$this->resize_height, (($this->height)*$resize_ratio), $this->height); } else { //宽度优先 imagecopyresampled($newimg, $this->im, 0, 0, 0, 0, $this->resize_width, $this->resize_height, $this->width, (($this->width)/$resize_ratio)); } } else { //不裁图 if($ratio>=$resize_ratio) { $newimg = imagecreatetruecolor($this->resize_width,($this->resize_width)/$ratio); if($this->type=="png") { imagefill($newimg, 0, 0, imagecolorallocatealpha($newimg, 0, 0, 0, 127)); } imagecopyresampled($newimg, $this->im, 0, 0, 0, 0, $this->resize_width, ($this->resize_width)/$ratio, $this->width, $this->height); } else { $newimg = imagecreatetruecolor(($this->resize_height)*$ratio,$this->resize_height); if($this->type=="png") { imagefill($newimg, 0, 0, imagecolorallocatealpha($newimg, 0, 0, 0, 127)); } imagecopyresampled($newimg, $this->im, 0, 0, 0, 0, ($this->resize_height)*$ratio, $this->resize_height, $this->width, $this->height); } } if($this->type=="png") { imagesavealpha($newimg, true); imagepng ($newimg,$this->dstimg); } else { imagejpeg ($newimg,$this->dstimg); } }
//初始化图象 private function initi_img() { if($this->type=="jpg") { $this->im = imagecreatefromjpeg($this->srcimg); } if($this->type=="gif") { $this->im = imagecreatefromgif($this->srcimg); } if($this->type=="png") { $this->im = imagecreatefrompng($this->srcimg); } }
//图象目标地址 private function dst_img($dstpath) { $full_length = strlen($this->srcimg);
$type_length = strlen($this->type); $name_length = $full_length-$type_length;
$name = substr($this->srcimg,0,$name_length-1); $this->dstimg = $dstpath; } } ?> |
使用
使用时,直接调用类的构造函数即可,构造函数如下:
$resizeimage = new resizeimage($imgPath, $width, $height, $isCut, $savePath);
参数
$imgPath:原图片地址
$width:缩略图宽
$height:缩略图高
$isCut:是否裁剪,bool值
$savePath:缩略图地址(可以跟原图片地址相同)
示例
?
1 2 3 4 5 6 7 8 9 10 |
include "ResizeImage.php";
//jpg $jpgResize = new ResizeImage("img/test_1920_1200.jpg", 320, 240, false, "img/test_320_240.jpg");
//png $pngResize = new ResizeImage("img/test_1024_746.png", 320, 240, false, "img/test_320_240.png");
?> |
效果

PhpSSsionsTrackUserDataacrossmultiplePagerequestSuseUniquidStoredinacookie.here'ShoWtomanAgeThemEffectely: 1) startAnSessionWithSession_Start () danStoRedatain $ _Session.2)

Dalam PHP, iterating melalui data sesi dapat dicapai melalui langkah -langkah berikut: 1. Mulakan sesi menggunakan session_start (). 2. ITERATE melalui gelung foreach melalui semua pasangan nilai utama dalam array $ _Session. 3. Apabila memproses struktur data kompleks, gunakan fungsi is_array () atau is_object () dan gunakan print_r () untuk mengeluarkan maklumat terperinci. 4. Apabila mengoptimumkan traversal, paging boleh digunakan untuk mengelakkan memproses sejumlah besar data pada satu masa. Ini akan membantu anda mengurus dan menggunakan data sesi PHP dengan lebih cekap dalam projek sebenar anda.

Sesi ini menyedari pengesahan pengguna melalui mekanisme pengurusan negara pelayan. 1) Penciptaan sesi dan penjanaan ID unik, 2) IDS diluluskan melalui kuki, 3) kedai pelayan dan mengakses data sesi melalui ID, 4) Pengesahan pengguna dan pengurusan status direalisasikan, meningkatkan keselamatan aplikasi dan pengalaman pengguna.

TOSTOREAUSER'SNAMEINAPHPSESSION, startTheSessionWithSsion_Start (), thenassignthenameto $ _Session ['username']

Sebab -sebab kegagalan phpsession termasuk kesilapan konfigurasi, isu cookie, dan tamat tempoh sesi. 1. Ralat Konfigurasi: Semak dan tetapkan session.save_path yang betul. Masalah 2.Cookie: Pastikan kuki ditetapkan dengan betul. 3.Session Expires: Laraskan Nilai Sesi.GC_MAXLifetime untuk melanjutkan masa sesi.

Kaedah untuk masalah sesi debug dalam PHP termasuk: 1. Periksa sama ada sesi dimulakan dengan betul; 2. Sahkan penghantaran ID sesi; 3. Semak penyimpanan dan bacaan data sesi; 4. Semak konfigurasi pelayan. Dengan mengeluarkan ID dan data sesi, melihat kandungan fail sesi, dan lain-lain, anda boleh mendiagnosis dan menyelesaikan masalah yang berkaitan dengan sesi.

Pelbagai panggilan ke session_start () akan menghasilkan mesej amaran dan kemungkinan penggantian data. 1) PHP akan mengeluarkan amaran, menyebabkan sesi telah dimulakan. 2) Ia boleh menyebabkan penggantian data sesi yang tidak dijangka. 3) Gunakan session_status () untuk memeriksa status sesi untuk mengelakkan panggilan berulang.

Mengkonfigurasi kitaran hayat sesi dalam PHP boleh dicapai dengan menetapkan sesi.gc_maxlifetime dan session.cookie_lifetime. 1) session.gc_maxlifetime mengawal masa survival data sesi pelayan, 2) session.cookie_lifetime mengawal kitaran hayat kuki klien. Apabila ditetapkan ke 0, kuki tamat apabila penyemak imbas ditutup.


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

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

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)

DVWA
Damn Vulnerable Web App (DVWA) ialah aplikasi web PHP/MySQL yang sangat terdedah. Matlamat utamanya adalah untuk menjadi bantuan bagi profesional keselamatan untuk menguji kemahiran dan alatan mereka dalam persekitaran undang-undang, untuk membantu pembangun web lebih memahami proses mengamankan aplikasi web, dan untuk membantu guru/pelajar mengajar/belajar dalam persekitaran bilik darjah Aplikasi web keselamatan. Matlamat DVWA adalah untuk mempraktikkan beberapa kelemahan web yang paling biasa melalui antara muka yang mudah dan mudah, dengan pelbagai tahap kesukaran. Sila ambil perhatian bahawa perisian ini

EditPlus versi Cina retak
Saiz kecil, penyerlahan sintaks, tidak menyokong fungsi gesaan kod

VSCode Windows 64-bit Muat Turun
Editor IDE percuma dan berkuasa yang dilancarkan oleh Microsoft
