Jika Anda sudah familiar dengan GD Library PHP, tidak sulit sama sekali untuk memahami artikel ini!
<?php
/****************************************************** ***** *******************************
Deskripsi parameter:
$max_file_size: batas ukuran file unggah, satuan BYTE
$destination_folder: Unggah jalur file
$watermark: Apakah akan menambahkan tanda air (1 berarti menambahkan tanda air, yang lain berarti tidak menambahkan tanda air)
;
1. Hapus tanda ; di depan baris "extension=php_gd2.dll" di file PHP.INI, karena kita perlu menggunakan perpustakaan GD;
2. Ubah extension_dir = ke direktori tempat php_gd2.dll Anda berada;
******************************************************* * *******************************/
//Unggah daftar jenis file
$uptypes=array(
'gambar/jpg',
'gambar/jpeg',
'gambar/png',
'gambar/pjpeg',
'gambar/gif',
'gambar/bmp',
'gambar/x-png'
);
$max_file_size=2000000; //Batas ukuran file unggah, satuan BYTE
$destination_folder="uploadimg/"; //Unggah jalur file
$watermark=1; //Apakah akan menambahkan tanda air (1 berarti menambahkan tanda air, yang lain berarti tidak menambahkan tanda air);
$watertype=1; //Jenis tanda air (1 adalah teks, 2 adalah gambar)
$waterposition=1; //Posisi tanda air (1 pojok kiri bawah, 2 pojok kanan bawah, 3 pojok kiri atas, 4 pojok kanan atas, 5 tengah);
$waterstring=" http://www.xplore.cn/ "; //string tanda air
$waterimg="xplore.gif"; //gambar tanda air
$imgpreview=1; //Apakah akan membuat gambar pratinjau (1 berarti dibuat, yang lain tidak dibuat);
$imgpreviewsize=1/2; //Rasio gambar kecil
?>
<html>
<kepala>
<title>Program pengunggahan gambar ZwellL</title>
<gaya tipe="teks/css">
<!--
tubuh
{
ukuran font: 9pt;
}
masukan
{
warna latar belakang: #66CCFF;
batas: 1px sisipkan #CCCCCC;
}
-->
</gaya>
</kepala>
<tubuh>
<form enctype="multipart/form-data" metode="post" name="upform">
Unggah file:
<masukan nama="upfile" type="file">
<input type="kirim" value="Unggah"><br>
Jenis file yang diperbolehkan untuk diunggah adalah:<?=implode(', ',$uptypes)?>
</bentuk>
<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST')
{
if (!is_uploaded_file($_FILES["upfile"][tmp_name]))
//Apakah filenya ada?
{
echo "Gambarnya tidak ada!";
KELUAR;
}
$file = $_FILES["file"];
if($max_file_size < $file["ukuran"])
//periksa ukuran file
{
echo "Filenya terlalu besar!";
KELUAR;
}
if(!in_array($file["type"], $uptypes))
//periksa jenis file
{
echo "Jenis file tidak cocok!".$file["type"];
KELUAR;
}
if(!file_exists($destination_folder))
{
mkdir($folder_tujuan);
}
$namafile=$file["nama_tmp"];
$ukuran_gambar = getimagesize($namafile);
$pinfo=jalurinfo($file["nama"]);
$ftype=$pinfo['ekstensi'];
$tujuan = $destinasi_folder.waktu().".".$ftype;
if (file_exists($destinasi) && $timpa != benar)
{
echo "File dengan nama yang sama sudah ada";
KELUAR;
}
if(!move_uploaded_file ($namafile, $tujuan))
{
echo "Kesalahan saat memindahkan file";
KELUAR;
}
$pinfo=jalurinfo($tujuan);
$fname=$pinfo[nama dasar];
echo " <font color=red>Berhasil diunggah</font><br>Nama file: <font color=blue>".$destination_folder.$fname."</font><br>";
echo "Lebar:".$ukuran_gambar[0];
echo "panjang:".$ukuran_gambar[1];
echo "<br> ukuran:".$file["ukuran"]." bytes"
;
{
$iinfo=getimagesize($tujuan,$iinfo);
$nimage=imagecreatetruecolor($ukuran_gambar[0],$ukuran_gambar[1]);
$putih=gambarwarnamengalokasikan($nimage,255,255,255);
$hitam=gambarwarnaallokasi($nimage,0,0,0);
$merah=gambarwarnamengalokasikan($nimage,255,0,0);
isi gambar($nimage,0,0,$putih);
beralih ($iinfo[2])
{
kasus 1:
$simage =imagecreatefromgif($tujuan);
merusak;
kasus 2:
$simage =imagecreatefromjpeg($tujuan);
merusak;
kasus 3:
$gambar =gambarbuatdaripng($tujuan);
merusak;
kasus 6:
$simage =imagecreatefromwbmp($tujuan);
merusak;
bawaan:
die("Jenis file tidak didukung";
KELUAR;
}
salinan gambar($nimage,$simage,0,0,0,0,$ukuran_gambar[0],$ukuran_gambar[1]);
imagefilledrectangle($nimage,1,$image_size[1]-15,80,$image_size[1],$white)
;
{
kasus 1: //Tambahkan string tanda air
imagestring($nimage,2,3,$ukuran_gambar[1]-15,$waterstring,$hitam);
merusak;
kasus 2: //Tambahkan gambar tanda air
$simage1 =imagecreatefromgif("xplore.gif";
salinan gambar($gambar,$gambar1,0,0,0,0,85,15);
penghancuran gambar($simage1);
merusak;
}
saklar ($iinfo[2])
{
kasus 1:
//imagegif($nimage, $tujuan);
imagejpeg($nimage, $tujuan);
merusak;
kasus 2:
imagejpeg($nimage, $tujuan);
merusak;
kasus 3:
imagepng($nimage, $tujuan);
merusak;
kasus 6:
imagewbmp($nimage, $tujuan);
//imagejpeg($nimage, $tujuan);
merusak;
}
//Timpa file asli yang diunggah
penghancuran gambar($nimage);
penghancuran gambar($gambar);
}
if($imgpratinjau==1)
{
echo "<br>Pratinjau gambar:<br>";
echo "<img src="".$destinasi."" width=".($image_size[0]*$imgpreviewsize)." height=".($image_size[1]*$imgpreviewsize);
echo " alt="Pratinjau gambar:rNama file:".$tujuan."rWaktu unggah:">";
}
}
?>
</tubuh>
</html>
Terakhir, menurut saya penting untuk membicarakan prinsip penandaan air pada gambar:
mendapatkan informasi file yang diunggah, membuat gambar berwarna asli, menetapkan skema warna, dan mengisi gambar.
Buat grafik dengan menilai jenis file, lalu salin ke grafik yang dibuat semula, isi dan buat persegi panjang, siap ditulis ke imagestring() atau
program gambar asli untuk menentukan jenis watermark: yang satu adalah string, yang lainnya adalah Tambahkan objek grafis di atas.