php将图像添加到另一个图像,精确定位

时间:2010-04-08 00:51:18

标签: php image-manipulation

我有一个很酷的代码片段,除了一件事情以外,效果很好。

代码将采用我想要添加到现有图片的图标。我可以把它定位在我想要的地方!这正是我需要做的。

然而,关于安置问题,我只关注一件事。

代码“起始位置”(在主图像上:navIcons.png)来自右下角。

我有两个变量:$ move_left = 10; &安培; $ move_up = 8;。 所以,我可以从右下角将icon.png 10px左侧和8px向上定位。

我真的很想从图像的左上角开始定位,所以我真正将图标10px移动到正确的位置。从主图像的左上角开始向下8px。

有人可以查看我的代码,看看我是否只是错过了一些反转起始位置的东西?

<?php

function attachIcon($imgname)
{
    $mark = imagecreatefrompng($imgname);
 imagesavealpha($mark, true);

    list($icon_width, $icon_height) = getimagesize($imgname);

    $img = imagecreatefrompng('images/sprites/navIcons.png');
 imagesavealpha($img, true);

    $move_left = 10;
    $move_up = 9;

    list($mainpic_width, $mainpic_height) = getimagesize('images/sprites/navIcons.png');
    imagecopy($img, $mark, $mainpic_width-$icon_width-$move_left, $mainpic_height-$icon_height-$move_up, 0, 0, $icon_width, $icon_height);
    imagepng($img);  // display the image + positioned icon in the browser
  //imagepng($img,'newnavIcon.png'); // rewrite the image with icon attached.
}

header('Content-Type: image/png');
 attachIcon('icon.png');
?>

对于那些想知道为什么我甚至打扰这样做的人。简而言之,我喜欢将16x16图标添加到单个图像中,同时使用css显示该单个图标。这确实涉及我下载图像(精灵)和打开photoshop,添加新图标(定位它),并将其重新上传到服务器。不是一场大规模的考验,而只是玩得开心。

2 个答案:

答案 0 :(得分:0)

bool imagecopy  (  resource $dst_im  ,  resource $src_im  ,  int $dst_x  ,  int $dst_y  ,  int $src_x  ,  int $src_y  ,  int $src_w  ,  int $src_h  )  

将src_im的一部分复制到dst_im上,从x,y坐标src_x,src_y开始,宽度为src_w,高度为src_h。定义的部分将被复制到x,y坐标,dst_x和dst_y。 (PHP.net

$move_right = 10;
$move_down = 8;    
imagecopy($img, $mark, $move_right, $move_down, 0, 0, $icon_width, $icon_height);

答案 1 :(得分:0)

事实证明,我并不比我应该做的更简单。

已经达到我需要的定位,我只需要不要使int $ dst_x / $ dst_y复杂化。

我在那里放了简单的整数,它有效。