PHP中的文本作为水印

Posted

技术标签:

【中文标题】PHP中的文本作为水印【英文标题】:Text as watermarking in PHP 【发布时间】:2009-11-13 03:37:10 【问题描述】:

我想创建文本作为图像的水印。水印应具有以下属性

front: Impact
color: white
opacity: 31%
Font style: regular, bold 
Bevel and Emboss 
size: 30 pixels

【问题讨论】:

@jasim:你在 10 分钟前问过这个问题吗?你会编辑最后一个问题吗? @不,那不一样。。这个是带文字的,另一个是带png图像的。 Here 对你有用的线程,不透明功能很酷很简单。 使用此代码...***.com/questions/3720618/… 使用此代码执行此操作。 ***.com/questions/3720618/… 【参考方案1】:

php 文档中的示例并不总是那么好,但在这种情况下,imagefttext() docs 应该会有所帮助。

【讨论】:

但是有可能有斜角、浮雕、不透明度属性吗?【参考方案2】:

使用不透明度函数link。

<?php

function filter_opacity(&$img, $opacity) //params: image resource id,  opacity in percentage (eg. 80)

    if (!isset($opacity)) 
        return false;
    
    $opacity /= 100;

    //get image width and height
    $w = imagesx($img);
    $h = imagesy($img);

    //turn alpha blending off
    imagealphablending($img, false);

    //find the most opaque pixel in the image (the one with the smallest alpha value)
    $minalpha = 127;
    for ($x = 0; $x < $w; $x++) 
        for ($y = 0; $y < $h; $y++) 
            $alpha = (imagecolorat($img, $x, $y) >> 24) & 0xFF;
            if ($alpha < $minalpha) 
                $minalpha = $alpha;
            
        
    

    //loop through image pixels and modify alpha for each
    for ($x = 0; $x < $w; $x++) 
        for ($y = 0; $y < $h; $y++) 
            //get current alpha value (represents the TANSPARENCY!)
            $colorxy = imagecolorat($img, $x, $y);
            $alpha = ($colorxy >> 24) & 0xFF;
            //calculate new alpha
            if ($minalpha !== 127) 
                $alpha = 127 + 127 * $opacity * ($alpha - 127) / (127 - $minalpha);
             else 
                $alpha += 127 * $opacity;
            
            //get the color index with new alpha
            $alphacolorxy = imagecolorallocatealpha($img, ($colorxy >> 16) & 0xFF, ($colorxy >> 8) & 0xFF, $colorxy & 0xFF, $alpha);
            //set pixel with the new color + opacity
            if (!imagesetpixel($img, $x, $y, $alphacolorxy)) 
                return false;
            
        
    

    return true;

示例用法:

<?php
$image = imagecreatefrompng("img.png");
filter_opacity($image, 75);
header("content-type: image/png");
imagepng($image);
imagedestroy($image);

【讨论】:

以上是关于PHP中的文本作为水印的主要内容,如果未能解决你的问题,请参考以下文章

php对图片加水印--将文字作为水印加到图片

php对图片加水印--将一张图片作为水印加到另一张图片

php [WooCommerce PDF Watermark]为文本水印添加更多标签

Java 删除/复制Word文档水印

php imagemagick可以去水印吗

php中的图像水印