Cela me vient à l'esprit lorsque je crée des miniatures de PDF à JPG/JPEG.
C'est la fonction que je l'ai mis en œuvre pour le faire:
function writeAttachmentsToDisk($mbox,$uid,$part,$dir,$subtype,$subject,$attachments,$readonly=false,$dataInici=''){
if(!file_exists($dir)){
mkdir($dir);
}
if(!empty($dataInici)){
$subject = trim(str_replace($dataInici,'',$subject));
}
$filename = setNomArxiu(@iconv_mime_decode($subject,0,'UTF-8').(count($attachments)>0?'-'.strtoupper(alpha(count($attachments))):'')).'.'.$subtype;
if(!$readonly || !file_exists($dir.'/'.$filename)){
$temp_filename = 'tmp.eml';
$email_file = $dir."/".$temp_filename;
@imap_savebody($mbox,$email_file,$uid,$part,FT_UID | FT_PEEK);
if(file_exists($email_file)){
$tb = false;
for($a=0;$a<count($attachments);$a++){
if(files_identical($email_file,$attachments[$a])){
$tb = true;
break;
}
}
if(!$tb){
$command = "php -r '\$fh = fopen(\$argv[1], \"r\"); \$theData=fread(\$fh, filesize(\$argv[1])); fclose(\$fh); echo base64_decode(\$theData);' '$email_file' > $dir/$filename";
exec($command,$output,$result);
if($result!=0){
unlink($email_file);
@rmdir($dir);
return false;
} else {
unlink($email_file);
return $dir.'/'.$filename;
}
}else{
unlink($email_file);
@rmdir($dir);
return false;
}
}else{
unlink($email_file);
@rmdir($dir);
return false;
}
}else{
return $dir.'/'.$filename;
}
}
La fonction ci-dessus utilise d'autres fonctions qui ne sont pas pertinents à la question à portée de main (alpha, setNomArxiu, files_identical).
Je suppose que le problème doit être en quelque sorte ici:
$command = "php -r '\$fh = fopen(\$argv[1], \"r\"); \$theData=fread(\$fh, filesize(\$argv[1])); fclose(\$fh); echo base64_decode(\$theData);' '$email_file' > $dir/$filename";
exec($command,$output,$result);
L'image résultante can be seen here in most browsers mais apparaît sombre, presque noir, dans Safari et lors de l'enregistrement sous Mac.
Des idées sur ce qui se passe ici?
Merci!
Eh bien, il semble que le changer en PNG résout le problème, mais cela ne répond toujours pas pourquoi les fichiers JPEG ne fonctionnent pas. –
Fonctionne agréablement sur Safari 5.0.3 pour mac :-) – Ragnar123