Используя ответ Фадежа, я получил решение ...
Картинка такая ...
Код -
<?php
header("Content-type: image/png");
$im = imagecreatefrompng('pic.png');
$newim = imagecreatetruecolor(imagesx($im),imagesy($im));
for ($x = 0; $x < imagesx($im); $x++) {
for ($y = 0; $y < imagesy($im); $y++) {
$rgba = imagecolorsforindex($im, imagecolorat($im, $x, $y));
$col = imagecolorallocate($newim, $rgba["red"], $rgba["green"], $rgba["blue"]);
$distorted_y = ($y + round(100*sin($x/50)) + imagesy($im)) % imagesy($im);
imagesetpixel($newim, $x, $distorted_y, $col);
}
}
imagepng($newim);
?>
Выход