一个超级强大的图片加水印的类
下午没事干,就写了个图片加水印处理的类,本类实现了给图片加文字水印,加图片水印,并且实现了透明度的功能,以供各位网友学习和交流
/**
* 加水印类,支持文字、图片水印以及对透明度的设置、水印图片背景透明。
* @author litx date:2011-12-05下午3点于迈科龙快播研发中心
*/
class WaterMask
{
/**
* 水印类型
* @var int $waterType 0为文字水印 ;1为图片水印
*/
private $waterType = 1;
/**
* 水印位置 类型
* @var int $pos 默认为9(右下角)
*/
private $pos = 9;
/**
* 水印透明度
* @var int $transparent 水印透明度(值越小越透明)
*/
private $transparent = 20;
/**
* 如果是文字水印,则需要加的水印文字
* @var string $waterStr 默认值 (李铁雄个人作品集)
*/
private $waterStr = '个人作品集';
/**
* 文字字体大小
* @var int $fontSize 字体大小
*/
private $fontSize = 14;
/**
* 水印文字颜色(RGB)
* @var array $fontColor 水印文字颜色(RGB)
*/
private $fontColor = array ( 255, 255, 255 );
/**
* 字体文件
* @var unknown_type
*/
private $fontFile = 'AHGBold.ttf';
/**
* 水印图片
* @var string $waterImg
*/
private $waterImg = 'logo.png';
/**
* 需要添加水印的图片
* @var string $srcImg
*/
private $srcImg = '';
/**
* 图片句柄
* @var string $im
*/
private $im = '';
/**
* 水印图片句柄
* @var string $water_im
*/
private $water_im = '';
/**
* 图片信息
* @var array $srcImg_info
*/
private $srcImg_info = '';
/**
* 水印图片信息
* @var array $waterImg_info
*/
private $waterImg_info = '';
/**
* 水印文字宽度
* @var int $str_w
*/
private $str_w = '';
/**
* 水印文字高度
* @var int $str_h
*/
private $str_h = '';
/**
* 水印X坐标
* @var int $x
*/
private $x = '';
/**
* 水印y坐标
* @var int $y
*/
private $y = '';
/**
* 构造函数,通过传入需要加水印的源图片初始化源图片
* @param string $img 需要加水印的源图片
*/
public function __construct ($img)
{
if(file_exists($img)){//源文件存在
$this -> srcImg = $img ;
}else{//源文件不存在
echo '源文件'.$img.'不存在,请检查看文件路径是否正确';
exit();
}
}
/**
* 获取需要添加水印的图片的信息,并载入图片
*/
public function imginfo ()
{
$this -> srcImg_info = getimagesize($this -> srcImg);
var_dump($this -> srcImg_info);exit();
switch ($this -> srcImg_info[2]) {
case 3 ://png
$this -> im = imagecreatefrompng($this -> srcImg);
break 1;
case 2 : // jpeg/jpg
$this -> im = imagecreatefromjpeg($this -> srcImg);
break 1;
case 1 : //gif
$this -> im = imagecreatefromgif($this -> srcImg);
break 1;
default :
echo '源图片文件'. $this -> srcImg .'格式不正确,目前本函数只支持PNG、JPEG、GIF图片水印功能';
exit();
}
}
/**
* 获取水印图片的信息,并载入图片
*/
private function waterimginfo ()
{
$this -> waterImg_info = getimagesize($this -> waterImg);
switch ($this -> waterImg_info[2]) {
case 3 :
$this -> water_im = imagecreatefrompng($this -> waterImg);
break 1;
case 2 :
$this -> water_im = imagecreatefromjpeg($this -> waterImg);
break 1;
case 1 :
$this -> water_im = imagecreatefromgif($this -> waterImg);
break 1;
default :
echo '源图片文件'. $this -> srcImg .'格式不正确,目前本函数只支持PNG、JPEG、GIF图片水印功能';
exit();
}
}
/**
* 水印位置算法
*/
private function waterpos ()
{
switch ($this -> pos) {
case 0 : //随机位置
$this -> x = rand(0, $this -> srcImg_info[0] - $this -> waterImg_info[0]);
$this -> y = rand(0, $this -> srcImg_info[1] - $this -> waterImg_info[1]);
break 1;
case 1 : //上左
$this -> x = 20;
$this -> y = 20;
break 1;
case 2 : //上中
$this -> x = ($this -> srcImg_info[0] - $this -> waterImg_info[0]) / 2;
$this -> y = 20;
break 1;
case 3 : //上右
$this -> x = $this -> srcImg_info[0] - $this -> waterImg_info[0];
$this -> y = 20;
break 1;
case 4 : //中左
$this -> x = 20;
$this -> y = ($this -> srcImg_info[1] - $this -> waterImg_info[1]) / 2;
break 1;
case 5 : //中中
$this -> x = ($this -> srcImg_info[0] - $this -> waterImg_info[0]) / 2;
$this -> y = ($this -> srcImg_info[1] - $this -> waterImg_info[1]) / 2;
break 1;
case 6 : //中右
$this -> x = $this -> srcImg_info[0] - $this -> waterImg_info[0] - 20;
$this -> y = ($this -> srcImg_info[1] - $this -> waterImg_info[1]) / 2;
break 1;
case 7 : //下左
$this -> x = 20;
$this -> y = $this -> srcImg_info[1] - $this -> waterImg_info[1] - 20;
break 1;
case 8 : //下中 www.2cto.com
$this -> x = ($this -> srcImg_info[0] - $this -> waterImg_info[0]) / 2;
$this -> y = $this -> srcImg_info[1] - $this -> waterImg_info[1] - 20;
break 1;
case 9 : //下右
$this -> x = $this -> srcImg_info[0] - $this -> waterImg_info[0] - 20;
$this -> y = $this -> srcImg_info[1] - $this -> waterImg_info[1] - 20;
break 1;
default : //下右
$this -> x = $this -> srcImg_info[0] - $this -> waterImg_info[0] - 20;
$this -> y = $this -> srcImg_info[1] - $this -> waterImg_info[1] - 20;
break 1;
}
}
/**
* 加图片水印
*/
private function waterimg ()
{
if ($this -> srcImg_info[0] waterImg_info[0] || $this -> srcImg_info[1] waterImg_info[1]) {
echo '图片尺寸太小,无法加水印,请上传一张大图片';
exit();
}
//计算水印位置
$this->waterpos();
$cut = imagecreatetruecolor($this -> waterImg_info[0], $this -> waterImg_info[1]);
imagecopy($cut, $this -> im, 0, 0, $this -> x, $this -> y, $this -> waterImg_info[0],
$this -> waterImg_info[1]);
$pct = $this -> transparent;
imagecopy($cut, $this -> water_im, 0, 0, 0, 0, $this -> waterImg_info[0],
$this -> waterImg_info[1]);
//将图片与水印图片合成
imagecopymerge($this -> im, $cut, $this -> x, $this -> y, 0, 0, $this -> waterImg_info[0], $this -> waterImg_info[1], $pct);
}
/**
* 加文字水印
*/
private function waterstr ()
{
$rect = imagettfbbox($this -> fontSize, 0, $this -> fontFile, $this -> waterStr);
$w = abs($rect[2] - $rect[6]);
$h = abs($rect[3] - $rect[7]);
$fontHeight = $this -> fontSize;
$this -> water_im = imagecreatetruecolor($w, $h);
imagealphablending($this -> water_im, false);
imagesavealpha($this -> water_im, true);
$white_alpha = imagecolorallocatealpha($this -> water_im, 255, 255, 255, 127);
imagefill($this -> water_im, 0, 0, $white_alpha);
$color = imagecolorallocate($this -> water_im, $this -> fontColor[0], $this -> fontColor[1],
$this -> fontColor[2]);
imagettftext($this -> water_im, $this -> fontSize, 0, 0, $this -> fontSize, $color,
$this -> fontFile, $this -> waterStr);
$this -> waterImg_info = array (
0 => $w, 1 => $h
);
$this->waterimg();
}
/**
* 水印图片输出
*/
public function output ()
{
$this->imginfo();
if ($this -> waterType == 0) {
$this->waterstr();
} else {
$this->waterimginfo();
$this->waterimg();
}
switch ($this -> srcImg_info[2]) {
case 3 :
imagepng($this -> im, $this -> srcImg);
break 1;
case 2 :
imagejpeg($this -> im, $this -> srcImg);
break 1;
case 1 :
imagegif($this -> im, $this -> srcImg);
break 1;
default :
die('添加水印失败!');
break;
}
//图片合成后的后续销毁处理
imagedestroy($this -> im);
imagedestroy($this -> water_im);
}
}
使用方法示例:
//实例化对象
$obj = new WaterMask('img/10451.jpg');
//类型:0为文字水印、1为图片水印
$obj->waterType = 0;
//水印透明度,值 越小透明度越高
$obj->transparent = 15;
//水印文字
//$obj->waterStr = '生日快乐';
//水印图片
//$obj->waterImg = '';//水印图片
//文字字体大小
$obj->fontSize = 14;
//水印文字颜色(RGB)
$obj->fontColor = array(255,255,100);
//字体文件
$obj->fontFile = 'STCAIYUN.ttf';
//输出水印图片文件覆盖到输入的图片文件
$obj->output();
使用方式比较简单,也很实用。
作者 ltx851201

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

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Dengan perkembangan media sosial yang berterusan, Xiaohongshu telah menjadi platform untuk lebih ramai golongan muda berkongsi kehidupan mereka dan menemui perkara yang indah. Ramai pengguna bermasalah dengan isu autosimpan semasa menyiarkan imej. Jadi, bagaimana untuk menyelesaikan masalah ini? 1. Bagaimana untuk menyelesaikan masalah menyimpan gambar secara automatik semasa menerbitkan di Xiaohongshu? 1. Kosongkan cache Pertama, kita boleh cuba mengosongkan data cache Xiaohongshu. Langkah-langkahnya adalah seperti berikut: (1) Buka Xiaohongshu dan klik butang "Saya" di sudut kanan bawah (2) Pada halaman tengah peribadi, cari "Tetapan" dan klik padanya (3) Tatal ke bawah dan cari "; Kosongkan Cache". Klik OK. Selepas mengosongkan cache, masukkan semula Xiaohongshu dan cuba siarkan gambar untuk melihat sama ada masalah penjimatan automatik telah diselesaikan. 2. Kemas kini versi Xiaohongshu untuk memastikan bahawa Xiaohongshu anda

Ingin tahu cara menambah tera air pada MeituXiuXiu? Meitu Xiuxiu ialah perisian penyuntingan foto yang sangat mudah digunakan Ia menyediakan fungsi seperti memotong gambar dan meletakkannya pada gambar lain, menukar saiz gambar mengikut kb, mengalih keluar tera air, menukar warna latar belakang foto ID, dan menambah masa. , tera air tarikh dan lokasi ke skrin penuh Bantu pengguna menyelesaikan pengeluaran gambar dengan cepat. Sesetengah pengguna telah mencipta gambar mereka sendiri dan tidak mahu orang lain mencurinya. Mereka mahu menutupnya dengan tera air mereka sendiri, tetapi mereka tidak tahu cara melakukannya? Editor kini akan berkongsi dengan anda cara menambah tera air pada gambar yang cantik! Jika anda suka, datang dan muat turunnya! 1. Bagaimana untuk menambah tera air pada Meitu Xiuxiu? Kongsi cara menambah tera air pada foto yang cantik! 1. Buka versi 2023 Meitu Xiu Xiu yang dimuat turun dari tapak ini. Versi Meitu Xiu Xiu 2023 Kategori: Penggambaran dan pengindahan Muat Turun Meitu Xiu Xiu 2023 versi ialah perisian pengindahan dan pengeditan gambar yang kaya dengan ciri

Dengan populariti video pendek Douyin, interaksi pengguna di kawasan komen menjadi lebih berwarna. Sesetengah pengguna ingin berkongsi imej dalam ulasan untuk meluahkan pendapat atau emosi mereka dengan lebih baik. Jadi, bagaimana untuk menyiarkan gambar dalam ulasan TikTok? Artikel ini akan menjawab soalan ini secara terperinci untuk anda dan memberikan anda beberapa petua dan langkah berjaga-jaga yang berkaitan. 1. Bagaimana untuk menyiarkan gambar dalam komen Douyin? 1. Buka Douyin: Pertama, anda perlu membuka APP Douyin dan log masuk ke akaun anda. 2. Cari kawasan ulasan: Apabila menyemak imbas atau menyiarkan video pendek, cari tempat yang anda mahu mengulas dan klik butang "Ulasan". 3. Masukkan kandungan ulasan anda: Masukkan kandungan ulasan anda dalam ruangan komen. 4. Pilih untuk menghantar gambar: Dalam antara muka untuk memasukkan kandungan ulasan, anda akan melihat butang "gambar" atau butang "+", klik

Untuk menjadikan foto yang diambil lebih diperibadikan dan unik, Xiaomi Mi 14 menyediakan tetapan tera air foto. Dengan menetapkan tera air foto, pengguna boleh menambah corak, teks dan logo pada foto yang mereka ambil, supaya setiap foto boleh merakam momen dan kenangan berharga dengan lebih baik. Seterusnya, kami akan memperkenalkan cara untuk menetapkan tera air foto dalam Xiaomi 14 untuk menjadikan foto anda lebih diperibadikan dan jelas. Bagaimana untuk menetapkan tera air foto pada Xiaomi Mi 14? 1. Mula-mula klik "Kamera". 2. Kemudian klik "Tetapan". 3. Kemudian cari tera air, dan kemudian anda boleh mula merakam.

1. Mula-mula, kita klik kanan ruang kosong bar tugas dan pilih pilihan [Task Manager], atau klik kanan logo mula, dan kemudian pilih pilihan [Task Manager]. 2. Dalam antara muka Pengurus Tugas yang dibuka, kami klik tab [Perkhidmatan] di hujung kanan. 3. Dalam tab [Perkhidmatan] yang dibuka, klik pilihan [Buka Perkhidmatan] di bawah. 4. Dalam tetingkap [Services] yang terbuka, klik kanan perkhidmatan [InternetConnectionSharing(ICS)], dan kemudian pilih pilihan [Properties]. 5. Dalam tetingkap sifat yang terbuka, tukar [Buka dengan] kepada [Disabled], klik [Apply] dan kemudian klik [OK]. 6. Klik logo mula, kemudian klik butang tutup, pilih [Mulakan Semula], dan selesaikan mula semula komputer.

Bagaimana untuk mengalih keluar teks salinan penilaian di sudut kanan bawah win1124H2? Apabila kita menggunakan sistem, kadangkala desktop akan memaparkan tera air lutsinar di sudut kanan bawah skrin Jadi bagaimana kita mengalih keluar tera air lutsinar ini? Pengguna boleh terus menggunakan perisian pihak ketiga untuk beroperasi. Biarkan tapak ini memperkenalkan dengan teliti kepada pengguna cara mengalih keluar tera air pada salinan penilaian win1124H2. Untuk mengalih keluar tera air pada salinan penilaian win1124H2, muat turun alat UniversalWatermarkDisabler Selepas menjalankannya, versi sistem semasa dan status tera air akan dipaparkan Jika "Sedia untuk pemasangan" dipaparkan dalam "Status", ia boleh dialih keluar.

Dalam PowerPoint, ia adalah teknik biasa untuk memaparkan gambar satu demi satu, yang boleh dicapai dengan menetapkan kesan animasi. Panduan ini memperincikan langkah untuk melaksanakan teknik ini, termasuk persediaan asas, sisipan imej, menambah animasi dan melaraskan susunan dan masa animasi. Selain itu, tetapan dan pelarasan lanjutan disediakan, seperti menggunakan pencetus, melaraskan kelajuan dan susunan animasi, dan pratonton kesan animasi. Dengan mengikuti langkah dan petua ini, pengguna boleh dengan mudah menyediakan gambar untuk muncul satu demi satu dalam PowerPoint, dengan itu meningkatkan kesan visual persembahan dan menarik perhatian penonton.

1. Kami menggunakan WPS untuk membuka dokumen Terdapat tanda air di dalamnya. Lihat ke bawah. 2. Cari tab Sisip dalam bar menu, pilih ikon pengepala dan pengaki di bawah tab ini, dan klik padanya dengan butang tetikus kiri. 3. Pada masa ini, teks pada halaman menjadi kelabu dan tidak boleh diedit, tetapi tera air di belakang teks boleh diedit pada masa ini. 4. Klik pada watermark, anda boleh melihat bahawa ini adalah watermark gambar, kerana terdapat beberapa petak kecil di sekeliling gambar, dan gambar boleh diedit pada masa ini. 5. Gunakan kekunci padam pada papan kekunci untuk memadam gambar, dan anda boleh melihat bahawa tera air telah hilang. 6. Klik dua kali tetikus pada halaman untuk keluar dari mod penyuntingan pengepala dan pengaki Teks pada halaman kembali kepada warna biasa dan boleh diedit, tetapi pada masa ini tera air pada halaman telah hilang. 7.
