Вот код:
$bg = new Imagick('./resourses/back.png');
$b = $bg;
$b->cropImage(100, 50, 0, 40);
$b->writeImage('cropped.png');
$b = $bg;
$b->writeImage('test.png');
В файл cropped.png записывается обрезанная картинка, как и должно быть. В файл test.png должна записаться нетронутая картинка back.png, которая содержится в переменной $bg. Но в файл test.png записывается обрезанная картинка - ровно та же, что и в cropped.png. Почему это происходит?
Оператор присваивания
Исключением из обычного для PHP способа присваивания по значению явлаются объекты (object), которые, начиная с версии PHP 5, присваиваются по ссылке. Принудительно скопировать объекты по значению можно с помощью специального ключевого слова clone.
Т.е. вот тут $b = $bg; переменной $b присваивается ссылка на объект $bg и когда вы ее кропаете, то, по факту, кропается изображение в объекте $bg.
Вам нужно либо использовать clone, либо создавать два объекта.
Продвижение своими сайтами как стратегия роста и независимости