这个是要你图片分三段,左右为图片,中间作为背景,css里设他为横向重复,添加文字

解决方案 »

  1.   

    我需要生成一个png图片,而不是用css来做特效
      

  2.   

    http://hk2.php.net/manual/en/function.imageftbbox.php
    http://hk2.php.net/manual/en/function.imagepsbbox.php
    http://hk2.php.net/manual/en/function.imagettfbbox.php根据你的需要用上面三个函数的其中一个获取你的文字在图片上绘制的大小,然后调整画布。
      

  3.   

    简单的说例如用 truetype 字体 
    http://hk2.php.net/manual/en/function.imagettfbbox.php$bbox = imagettfbbox(10, 45, './arial.ttf', 'www.mikespook.com');$bbox 得到一个8元素长数组分别表示了文字下左、下右、上右、上左的坐标。
    简单的说,就是文字绘制在画布上时,你用一个边和画布边平行的最小的长方形框住的位置。
    那么你可以用这组坐标计算出文字实际的宽高,然后用这个宽高创建画布,绘制文字在坐标 0,0 即可~~细节,打开画板什么的用鼠标画画很容易明白。
      

  4.   

    $str="test1111111111222222";
    $im = imagecreatefrompng("test.png");
    $srcW=ImageSX($im);
    $srcH=ImageSY($im);$ni=ImageCreate(400,$srcH);
    imagecopyresampled($ni,$im,0,0,0,0,400,$srcH,$srcW,$srcH);$str_width = imagettfbbox(9, 0, "tahoma.ttf", $str);
    $str_start = (200 - ($str_width[2] + 113));
    $color = imagecolorallocate($ni, 164, 164, 164);
    imagettftext($ni, 9, 0, $str_start, 16, $color, "tahoma.ttf", $str);
    imagepng($ni);
    imagedestroy($ni);我的代码是这样写的,虽然画布宽了,但图片中图案被拉长变形了
      

  5.   

    $str_width = imagettfbbox(9, 0, "tahoma.ttf", $str); // 先获取文字宽度
    $ni=ImageCreate($str_width[2] - $str_width[0], $srcH); // 再根据宽度创建图片
      

  6.   

    搞不定呀,要累死这个网站生成email图标的效果
    http://services.nexodyne.com/email/index.php图片的宽度随输入的“用户名”字符的数目而变化,字数多则宽度变大,字数少则宽度便变小,但右侧“@gmail.com"的图案尺寸不变
      

  7.   

    另外那个帖子回了~~~
    <?php
    $str="test1";$im = imagecreatefrompng("test.png");$srcW=ImageSX($im);
    $srcH=ImageSY($im);$str_width = imagettfbbox(9, 0, "tahoma.ttf", $str);
    $ni=imagecreatetruecolor($str_width[2] - $str_width[0] + $srcW, $srcH);
    imagefill($ni, 0, 0, imagecolorallocate($ni, 255, 255, 255));imagecopyresampled($ni,$im, abs($str_width[2] - $str_width[0]),0,0,0,$srcW,$srcH,$srcW,$srcH);$color = imagecolorallocate($ni, 0, 0, 0);
    imagettftext($ni, 9, 0, 0, abs($str_width[7] - $str_width[1]), $color, "tahoma.ttf", $str);imagepng($ni, "test1.png");
    imagedestroy($ni);