Rumah >pembangunan bahagian belakang >tutorial php >PHP Master | Tanda air imej dengan Imagick
Adalah penting bahawa watermark cukup telus untuk anda masih dapat melihat imej asal, tetapi cukup legap sehingga sukar bagi orang yang tidak bertanggungjawab untuk dikeluarkan. Tahap kelegapan 40% mungkin merupakan titik permulaan yang baik, dan anda boleh meningkatkannya atau mengurangkannya bergantung kepada keadaan.
Anda juga mahu tanda air menjadi cukup besar. Jika anda hanya meletakkan tanda air kecil di sudut kanan bawah, ia adalah sasaran utama untuk dipotong. Tanda air yang meliputi sebahagian besar imej asal lebih berkesan. Lihat bagaimana Istockphoto dan Shutterstock mengisar kerja mereka untuk contoh.
Akhirnya, tanda air sepatutnya berbeza. Pertimbangkan untuk membuat tanda air gelap dengan strok cahaya atau visa-versa. Inilah yang dilakukan oleh Istockphoto dan Shutterstock, dan tanda mereka mudah dilihat pada semua imej mereka sama ada imej asalnya ringan atau gelap.
Untuk artikel ini saya akan menggunakan ini sebagai Watermark saya, fail PNG dengan kira -kira 40% kelegapan:
<span><span><?php </span></span><span><span>// Open the original image </span></span><span><span>$image = new Imagick(); </span></span><span><span>$image->readImage("/path/to/image.jpg"); </span></span><span> </span><span><span>// Open the watermark </span></span><span><span>$watermark = new Imagick(); </span></span><span><span>$watermark->readImage("/path/to/watermark.png"); </span></span><span> </span><span><span>// Overlay the watermark on the original image </span></span><span><span>$image->compositeImage($watermark, imagick<span>::</span>COMPOSITE_OVER, 0, 0); </span></span><span> </span><span><span>// send the result to the browser </span></span><span><span>header("Content-Type: image/" . $image->getImageFormat()); </span></span><span><span>echo $image;</span></span>> html secara automatik. Jika anda mengeluarkan imej, penyemak imbas tidak akan mengendalikannya dengan betul kerana tajuk memberitahu anda menghantar teks. Untuk mengelakkan pelawat anda disambut dengan halaman yang gibberish, anda perlu mengarahkan PHP untuk menghantar header yang lebih sesuai menggunakan header () sebelum menghantar imej. Daripada hanya pengkodan keras nilai tajuk kandungan, contohnya mengakses jenis imej menggunakan Imagick sendiri yang kemudiannya digunakan untuk membina jenis mime yang sesuai dengan cepat. Inilah hasil akhir, imej yang ditanda air:
Mengurangkan watermark
Contoh terdahulu memposisikan watermark di bahagian atas imej asal. Walaupun pendekatan ini baik -baik saja jika anda mengetahui saiz imej asal terlebih dahulu kerana anda boleh membuat tanda air dengan dimensi yang sesuai, anda mungkin mahu pendekatan yang lebih mantap sekiranya saiz imej asal berbeza -beza. Pendekatan sedemikian mungkin untuk meletakkan watermark di tengah -tengah imej, dan skala air terlebih dahulu jika ia lebih besar daripada imej asal.
<span><span><?php
</span></span><span><span>// Open the original image
</span></span><span><span>$image = new Imagick();
</span></span><span><span>$image->readImage("/path/to/image.jpg");
</span></span><span>
</span><span><span>// Open the watermark
</span></span><span><span>$watermark = new Imagick();
</span></span><span><span>$watermark->readImage("/path/to/watermark.png");
</span></span><span>
</span><span><span>// Overlay the watermark on the original image
</span></span><span><span>$image->compositeImage($watermark, imagick<span>::</span>COMPOSITE_OVER, 0, 0);
</span></span><span>
</span><span><span>// send the result to the browser
</span></span><span><span>header("Content-Type: image/" . $image->getImageFormat());
</span></span><span><span>echo $image;</span></span>
GetImageWidth ()
dan kaedah getImageHeight () mengembalikan lebar dan ketinggian imej masing -masing, diukur dalam piksel. Dengan membandingkan lebar dan ketinggian imej watermark ke imej asal, anda boleh menentukan sama ada ia perlu untuk mengubah saiz watermark supaya ia sesuai dengan imej yang lebih kecil.
Saiz semula watermark dicapai dengan memanggil kaedah ScaleImage () yang mengambil lebar dan ketinggian yang dibenarkan. Kaedah ini akan skala imej ke bawah supaya lebar maksimum tidak lebih besar daripada lebar yang dibenarkan, dan ketinggian maksimum tidak lebih besar daripada ketinggian yang dibenarkan, sambil mengekalkan nisbah aspek imej.
Dan inilah imej yang ditanda air yang dihasilkan dari contoh ini:
Terdapat beberapa cara untuk membuat tanda air untuk imej anda. Anda boleh menggunakan perisian reka bentuk grafik seperti Adobe Photoshop atau alat dalam talian percuma seperti Watermark.ws. Platform ini membolehkan anda memuat naik logo anda atau mana -mana teks dan menyesuaikan kelegapannya untuk membuat tanda air. Anda kemudian boleh menyimpan watermark ini dan memohon kepada imej anda. Tujuan watermark adalah untuk melindungi hak harta intelektual Pencipta. Mengeluarkannya boleh melanggar hak -hak ini dan membawa kepada akibat undang -undang. Ini membolehkan anda memuat naik pelbagai imej dan memohon watermark anda kepada mereka semua sekaligus, menjimatkan masa dan usaha anda. Contoh -contoh alat tersebut termasuk watermark.ws dan watermark visual.
Bolehkah saya menyesuaikan rupa watermark saya? Anda biasanya boleh menyesuaikan saiz, warna, kelegapan, dan kedudukan. Sesetengah alat juga membolehkan anda menambah kesan seperti bayang -bayang atau cahaya. Jika anda bimbang tentang kecurian imej atau ingin meningkatkan penglihatan jenama, watermarking boleh bermanfaat. Walau bagaimanapun, sesetengah pencipta memilih untuk tidak menandai imej mereka untuk mengekalkan pandangan yang bersih dan tidak terhalang mengenai kerja mereka. Walau bagaimanapun, penting untuk memastikan bahawa watermark anda tidak terlalu mengganggu atau mengganggu, kerana ini dapat mengurangkan imej keseluruhan. Perisian penyuntingan video seperti Adobe Premiere Pro dan alat dalam talian seperti Kapwing membolehkan anda menambah tanda air ke video anda.
Atas ialah kandungan terperinci PHP Master | Tanda air imej dengan Imagick. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!