0

私はphpとmysqlのニュースサイトを持っています

ニュース画像に自動透かしを入れるスクリプトを追加するにはどうすればよいですか?

このコードは、mysql への私のサイト ニュース接続です。

$sql = mysql_query("SELECT newsid,title,img,stext,ltext,count,date,time,source FROM news WHERE newsid='$newsid' AND cat <> '1' LIMIT 1");

「img」は私のニュース画像ファイルです

「img」ファイルに画像の透かしを追加するにはどうすればよいですか?

4

3 に答える 3

0

PHP でGDを使用 して、テキストの透かしを作成できます。次のコードでは 、非推奨の関数の代わりにPDOmysql_を使用しています。透かしは .png ファイルに追加されます。他のファイル タイプを使用する場合は、それに合わせてヘッダーを変更する必要がありimagecreatefrompng()ます。blobimagecreatefromstring()

<?php
function ImageStringCenter($image, $fontSize, $lineNumber, $totalLines, $text, $color ) { 
    $centerX = ceil( ( imagesx($image) - ( ImageFontWidth($fontSize) * strlen($text) ) ) / 2 ); 
    $centerY = ceil( ( ( imagesy($image) - ( ImageFontHeight($fontSize) * $totalLines ) ) / 2)  + ( ($lineNumber-1) * ImageFontHeight($fontSize) ) ); 
    ImageString($image, $fontSize, $centerX, $centerY, $text, $color ); 
} 
require("dbinfo.php");//database connection paramerters 
$id = 1;
//Connect to database
$dbh = new PDO("mysql:host=$host;dbname=$database", $username, $password);
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
try {
    // Prepare statement
    $stmt = $dbh->prepare("SELECT * FROM images WHERE id = ?");
    // Assign parameters
    $stmt->bindParam(1,$id);
    //Execute query
    $stmt->setFetchMode(PDO::FETCH_ASSOC);
    $stmt->execute();
    // Fetch Result
    $result = $stmt -> fetch();
    $image1 = $result["image2"];
    $im = imagecreatefrompng($image1);//for .png file
    $text_color = imagecolorallocate($im, 266, 266, 266);
    ImageStringCenter($im, 5, 1, 2,  "Watermark", $text_color);
    ImageStringCenter($im, 5, 2, 2,  "20/02/2013", $text_color);
    header("Content-Type: image/png");//for .png file
    imagepng($im);
    imagedestroy($image1);
}


catch(PDOException $e) {
    echo "The following error occured.". $e->getMessage() ;// Remove or modify after testing 
    file_put_contents('PDOErrors.txt',date('[Y-m-d H:i:s]').", mapSelect.php, ". $e->getMessage()."\r\n", FILE_APPEND);  
 }
//Close the connection
$dbh = null; 
?>

サンプル透かし サンプル透かし

于 2013-02-22T16:53:43.303 に答える
0

これには、画像をファイルとしてサーバーに保存する必要があります。

最初に、CodeIgniter の画像ライブラリがまだ自動ロードされていない場合はロードします。

$this->load->library('image_lib');

以下は、中央の画像の下部に透かしを追加します。

$config['source_image'] = '/path/to/image.jpg';
$config['wm_text'] = 'Your watermark text';
$config['wm_type'] = 'text';
$config['wm_font_path'] = './system/fonts/texb.ttf';
$config['wm_font_size'] = '16';
$config['wm_font_color'] = 'ffffff';
$config['wm_vrt_alignment'] = 'bottom';
$config['wm_hor_alignment'] = 'center';
$config['wm_padding'] = '20';

$this->image_lib->initialize($config); 

$this->image_lib->watermark();

代わりに透かしとして画像が必要な場合は、変更します

$config['wm_text'] = 'Your watermark text';
$config['wm_type'] = 'text';

$config['wm_overlay_path'] = '/path/to/overlay.png';
$config['wm_type'] = 'overlay';
于 2013-02-22T16:00:32.573 に答える
0

GD または imageMagick を使用できます

例: http://permadi.com/blog/2010/03/using-php-gd-to-add-watermark-to-images/

(上記リンクのコード)

01  <?php
02     // Load the image where the logo will be embeded into
03     $image = imagecreatefromjpeg($_GET['imageURL']);
04   
05   
06     // Load the logo image
07     $logoImage = imagecreatefrompng("logo.png");
08     imagealphablending($logoImage, true);
09        
10     // Get dimensions
11     $imageWidth=imagesx($image);
12     $imageHeight=imagesy($image);
13        
14     $logoWidth=imagesx($logoImage);
15     $logoHeight=imagesy($logoImage);    
16        
17     // Paste the logo
18     imagecopy(
19        // destination
20        $image,
21        // source
22        $logoImage,
23        // destination x and y
24        $imageWidth-$logoWidth, $imageHeight-$logoHeight,   
25        // source x and y
26        0, 0,
27        // width and height of the area of the source to copy
28        $logoWidth, $logoHeight);
29           
30     // Set type of image and send the output
31     header("Content-type: image/png");
32     imagePng($image);
33    
34     // Release memory
35     imageDestroy($image);
36     imageDestroy($imageLogo);    
37  ?>
于 2013-02-22T15:32:12.613 に答える