То же самое происходит со мной, когда я делаю миниатюры из PDF в JPG / JPEG.
Это функция, которую я реализовал для этого:
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;
}
}
Приведенная выше функция использует другие функции, не относящиеся к рассматриваемому вопросу (альфа, setNomArxiu, files_identical).
Полагаю, проблема должна быть как-то здесь:
$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);
Полученное изображение можно увидеть здесь в большинстве браузеров , но оно выглядит затемненным, почти черным в Safari и при сохранении в Mac.
Есть идеи, что здесь происходит?
спасибо!