Php GD图像库将2个图像与“合并”;碰撞检测“;

Php GD图像库将2个图像与“合并”;碰撞检测“;,php,image,image-processing,gd,Php,Image,Image Processing,Gd,我有两张图片,白色背景上的大文本。长度不同,但文本总是向左对齐,因此每个图像的右侧基本上都有可用空间。现在,我想将这两个图像合并为一个,并尽可能地将它们紧密地移动到一起,而不让文本“碰撞” 我想以某种方式检查每像素柱基上是否有除白色以外的其他颜色(从右侧开始),这样我就知道文本开始的像素数。找到了解决方案,即从图像中去除所有空白的整洁函数: function stripWhitespace($img) { //find the size of the borders $b_top

我有两张图片,白色背景上的大文本。长度不同,但文本总是向左对齐,因此每个图像的右侧基本上都有可用空间。现在,我想将这两个图像合并为一个,并尽可能地将它们紧密地移动到一起,而不让文本“碰撞”


我想以某种方式检查每像素柱基上是否有除白色以外的其他颜色(从右侧开始),这样我就知道文本开始的像素数。

找到了解决方案,即从图像中去除所有空白的整洁函数:

function stripWhitespace($img) {
        //find the size of the borders
$b_top = 0;
$b_btm = 0;
$b_lft = 0;
$b_rt = 0;

//top
for(; $b_top < imagesy($img); ++$b_top) {
  for($x = 0; $x < imagesx($img); ++$x) {
    if(imagecolorat($img, $x, $b_top) != 0xFFFFFF) {
       break 2; //out of the 'top' loop
    }
  }
}

//bottom
for(; $b_btm < imagesy($img); ++$b_btm) {
  for($x = 0; $x < imagesx($img); ++$x) {
    if(imagecolorat($img, $x, imagesy($img) - $b_btm-1) != 0xFFFFFF) {
       break 2; //out of the 'bottom' loop
    }
  }
}

//left
for(; $b_lft < imagesx($img); ++$b_lft) {
  for($y = 0; $y < imagesy($img); ++$y) {
    if(imagecolorat($img, $b_lft, $y) != 0xFFFFFF) {
       break 2; //out of the 'left' loop
    }
  }
}

//right
for(; $b_rt < imagesx($img); ++$b_rt) {
  for($y = 0; $y < imagesy($img); ++$y) {
    if(imagecolorat($img, imagesx($img) - $b_rt-1, $y) != 0xFFFFFF) {
       break 2; //out of the 'right' loop
    }
  }
}

//copy the contents, excluding the border
$newimg = imagecreatetruecolor(
    imagesx($img)-($b_lft+$b_rt), imagesy($img)-($b_top+$b_btm));

imagecopy($newimg, $img, 0, 0, $b_lft, $b_top, imagesx($newimg), imagesy($newimg));
return $newimg;
    }
函数条带空白($img){
//查找边框的大小
$b_top=0;
$b_btm=0;
$b_lft=0;
$b_rt=0;
//顶
对于(;$b_-top

从这里开始:

到目前为止,您尝试了什么?那么,具体的编程问题是什么?到目前为止,您只留下了一些要求,因此这听起来更像是谷歌的请求,而不是真正的问题。我尝试将文本长度(以字符为单位,strlen())应用到我的合并函数中,但由于文本被扭曲(用于验证码),这不起作用,有时它们显然重叠。你真的没想到它能解决这个问题,对吧?一个更好的变体是imagettfbox,但它无法击败验证码。您可能希望删除页面的白色部分,您可以在此网站上搜索。