黒の背景のない正しい画像を取得するには、次の戦略に従う必要があります。
最初に新しい画像アイテムを作成します。アルファブレンドをfalseに設定します。savealphaをtrueに設定します。透明な長方形でファイルします。灰色の画像をその上にコピーします。
あなたのコードはこれに似ています:
        switch ($handle->file_src_name_ext) {
          case 'gif':
            $sourceIm = imagecreatefromgif($savepath.$handle->file_dst_name);
            break;
          case 'jpg':
            $sourceIm = imagecreatefromjpeg($savepath.$handle->file_dst_name);
            break;
          case 'png':
          default:
            $sourceIm = imagecreatefrompng($savepath.$handle->file_dst_name);
            break;
        }
        $iw = imagesx($sourceIm);
        $ih = imagesy($sourceIm);
        $im = imagecreatetruecolor($iw, $ih);
        if (function_exists('imagecolorallocatealpha')) {
            imagealphablending($im, false);
            imagesavealpha($im, true);
            $transparent = imagecolorallocatealpha($im, 255, 255, 255, 127);
            imagefilledrectangle($im, 0, 0, $iw, $ih, $transparent);
        }
        if ($sourceIm ) {
          imagefilter($sourceIm, IMG_FILTER_GRAYSCALE);
        }
        imagecopyresampled($im, $sourceIm, 0, 0, 0, 0, $iw, $ih, $iw, $ih);
        switch ($handle->file_src_name_ext) {
          case 'gif':
            imagepng($im, $savepath.'grd'.$row->id.'.gif');
            break;
          case 'jpg':
            imagejpeg($im, $savepath.'grd'.$row->id.'.jpg');
            break;
          case 'png':
          default:
            imagepng($im, $savepath.'grd'.$row->id.'.png');
            break;
        }
幸運を!
私のバルダポモシュニックを見てください