PHP | imagecopymerge() не будет работать

#php #php-gd

#php #php-gd

Вопрос:

         $dest = imagecreatefromjpeg('image.jpg');
        $src = imagecreatefrompng('image2.png');

        // Copy and merge
        imagecopymerge($dest, $src, 50, 50, 0, 0, 30, 30, 75);

        imagepng($dest, '1.png');

        imagedestroy($dest);
        imagedestroy($src);
  

$ dest = 50×50
$ src = 30×30
1.png показывает только изображение $ dest без $ src поверх него.

Заранее спасибо.

Ответ №1:

Если значение dest равно 50×50, то вы пытаетесь скопировать из нижнего правого угла, который имеет 50, 50 в качестве координат.

   ----------------------- 
 |                       |
 |                       |
 |     you should copy   |
 |                       |
 |                       |
 |                       |
 |     there             |
 |                       |
 |                       |
 |                       |
 |                       |
  ----------------------- ----------------------- 
                         |                       |
                         |                       |
                         |    you're copying     |
                         |                       |
                         |                       |
                         |                       |
                         |                       |
                         |       here            |
                         |                       |
                         |                       |
                         |                       |
                         |                       |
                          ----------------------- 
  

Комментарии:

1. Теперь, как я могу поместить его с прозрачными краями на другой?

2. @askingDude: я не понимаю, что вы подразумеваете под «прозрачными краями», но если я проигнорирую эту часть предложения, я бы сказал, изменив координаты на что-то меньшее, чем 50, 50. Если вы это сделаете, вы должны что-то увидеть, а затем продолжить методом проб и ошибок…

3. Да, это сработало: imagecopymerge($ dest, $ src, 25, 25, 0, 0, 25, 25, 100); А второй img теперь равен 25 пикселям. Но мое второе изображение представляет собой круг, и оно показывает белые края, пока не станет похоже на прямоугольник, как я могу избавиться от белых краев? * .png?

4. После прочтения руководства кажется, что вы не должны получать эти белые края с вашим последним параметром… вы уверены, что эти края не отображаются на исходном изображении?

5. Я имею в виду, что я хочу, чтобы у моего изображения не было белых краев, и я удалил их с помощью photoshop, но они почему-то все еще там, может быть, из-за формата изображения?