Код, на который вы ссылаетесь, выходит из строя, если несколько предварительных условий терпят неудачу:
if(!($src_f = fopen($src, "rb"))) {
...
if(!($dest_f = fopen($dest, "wb"))) {
...
if($type != 0x4D42) { // signature "BM"
Таким образом, если исходные файлы и файлы tmp доступны для чтения / записи, это выглядит как файл, который вы даете (отправляется как .png, но дает тип MIMP BMP) на самом деле также не файл BMP, потому что содержимое файла не начинается с идентификатора "BM".Если вы прикрепите файл, возможно, кто-нибудь сможет определить, что это на самом деле.
Другое решение, которое я использовал для решения этой проблемы, - это использовать команду преобразования ImageMagick для преобразования большинства типов файлов, какими бы они ни были, в желаемыйформат:
// convert uses the file extension to determine the output format, so
// change .jpg to whatever you'd like
$tmp_name = tempnam("/tmp", "convert") . '.jpg';
exec('c:\path\to\imagemagick\convert ' . $inputFile . ' ' . $tmp_name);
Вы можете получить ImageMagick для Windows и других платформ здесь: http://www.imagemagick.org/script/binary-releases.php