$Str = $db->BlobDecode( reset($recordSet->fields) );
$imfilename = "tmp/aaa.jpg";
$imfile = fopen($imfilename, "w");
fwrite($imfile, substr($Str,$p1,$p2-$p1) );
fclose($imfile);
$im = imagecreatefromjpeg($imfilename);
В файл записываю ту же самую строку которую и подаю на вход функции
$im = imagecreatefromstring( substr($Str,$p1,$p2-$p1) );
Но на некоторых форматах JPEG(точно не знаю по какому признаку или разрешение или палитра) работают оба варианта создания $im, а на некоторых форматах только создание через файл.