加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

在php中调整动态水印png的大小

发布时间:2020-12-13 16:46:38 所属栏目:PHP教程 来源:网络整理
导读:我正在尝试自动调整水印大小以覆盖图像的1/4.我有水印代码工作,但我无法正确调整大小. ?php$image = $_GET['src'];$path_parts = pathinfo($image);$extension=strtolower($path_parts['extension']);$size = (imagesx($image)/2);$stamp = ImageCreateFromP
我正在尝试自动调整水印大小以覆盖图像的1/4.我有水印代码工作,但我无法正确调整大小.

<?php

$image = $_GET['src'];
$path_parts = pathinfo($image);
$extension=strtolower($path_parts['extension']);
$size = (imagesx($image)/2);

$stamp = ImageCreateFromPNG("watermark.png"); 
ImageAlphaBlending($stamp,true); 
ImageSaveAlpha($stamp,true); 



$w = imagesx($stamp); 
$h = imagesy($stamp); 

if( $w==0 or $h==0 ) die("ERROR - zero image size"); 

$percent = $size / (($w>$h)?$w:$h); 
$nw = intval($w*$percent); 
$nh = intval($h*$percent); 

$stamp_resized = ImageCreateTrueColor($nw,$nh); 

ImageAlphaBlending($stamp_resized,false); 
ImageSaveAlpha($stamp_resized,true); 

if(!empty($transparent_color)) 
{ 
    $transparent_new = ImageColorAllocate($stamp_resized,$transparent_color['red'],$transparent_color['green'],$transparent_color['blue']); 
    $transparent_new_index = ImageColorTransparent($stamp_resized,$transparent_new); 
    ImageFill($stamp_resized,$transparent_new_index); 
} 

if(ImageCopyResized($stamp_resized,$stamp,$nw,$nh,$w,$h )) 
{ 
    ImageDestroy($stamp); 
    $stamp = $stamp_resized; 
} 




//Everything from here on works perfect
if(file_exists($image)){
    if ($extension == 'gif')$im = imagecreatefromgif($_GET['src']);
    if ($extension == 'jpg')  {

        $im = imagecreatefromjpeg($_GET['src']);

        $marge_right = 10;
        $marge_bottom = 10;
        $sx = imagesx($stamp);
        $sy = imagesy($stamp);


        imagecopy($im,imagesx($im) - $sx - $marge_right,imagesy($im) - $sy - $marge_bottom,$sx,$sy);

    }
}
else{
$im = imagecreatefromgif('images/no_picture.gif');
}



// Output and free memory
header('Content-type: image/jpeg');
imagejpeg($im);  
imagedestroy($im);
?>

我检查了错误日志,并出现了以下错误:

[Thu Aug 09 16:47:05 2012] [error] [client 24.224.164.149] PHP Warning:  imagesx() expects parameter 1 to be resource,string given in {path removed}/watermark.php on line 15

[Thu Aug 09 16:47:05 2012] [error] [client 24.224.164.149] PHP Warning:  imagecreatetruecolor(): Invalid image dimensions in {path removed}/watermark.php on line 32

[Thu Aug 09 16:47:05 2012] [error] [client 24.224.164.149] PHP Warning:  imagealphablending() expects parameter 1 to be resource,boolean given in {path removed}/watermark.php on line 34

[Thu Aug 09 16:47:05 2012] [error] [client 24.224.164.149] PHP Warning:  imagesavealpha() expects parameter 1 to be resource,boolean given in {path removed}/watermark.phpp on line 35

[Thu Aug 09 16:47:05 2012] [error] [client 24.224.164.149] PHP Warning:  imagecopyresized() expects parameter 1 to be resource,boolean given in {path removed}/watermark.php on line 44

解决方法

结果我传递的图像是图像的路径($image),而不是图像资源($im)本身.我稍微重新编写代码,以便在调整图像大小之前加载jpg.

这解决了所有级联错误,现在工作正常.故事的道德,检查错误日志.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读