Дело в том что imagecreatetruecolor создает изображение с черным фоном. При включенном “режиме сопряжения цветов” прозрачный пиксель, не заменит фон, а будет рассчитан новый цвет в соответствии с новым цветом и цветом фона с учетом альфа канала обоих цветов – в итоге для полностью прозрачного пикселя получаем фоновой цвет – т.е. черный.
Решение следующие
После строки:
$NewCanves = imagecreatetruecolor($NewWidth, $NewHeight);
Добавляем это:
//Отключаем режим сопряжения цветов
imagealphablending($NewCanves, false);
//Включаем сохранение альфа канала
imagesavealpha($NewCanves, true);
Замените строку
if(imagejpeg($NewCanves,$DestImage,$Quality)){
на
if(imagepng($NewCanves,$DestImage,$Quality)){
И в строке что ниже, укажите качество 0-9, если максимальное то ставьте $Quality=9
resizeImage($imagePath,$destPath,$NewImageWidth=230,$NewImageHeight=138,$Quality=100);