It seems that PHP's iptcembed()
function corrupts JPG files.
This demonstration extracts the IPTC data and immediately embeds it again:
// extract IPTC data
getimagesize($sourceFile,$info);
$iptcData = $info['APP13'];
// embed IPTC data
$newFile = iptcembed($iptcData,$sourceFile);
// write new file to disk
$fp = fopen($sourceFile,"w");
fwrite($fp,newFile);
fclose($fp);
// get size of file
$size = getimagesize($sourceFile,$info);
Warning: getimagesize(): corrupt JPEG data: 1382 extraneous bytes before marker in example.php on line XX
What's going wrong?