php 手机无法下载文件,下载php渲染图像-无法在android手机上打开

我正在使用脚本:

1。在我的服务器上渲染/保存图像。

2。将保存的图像作为下载提供给浏览器。

因此图像不会打开,而是由浏览器下载。工作完美。

但是当我在android手机上下载图像时,下载后我无法从浏览器/文件查看器打开图像。但是,在我的图库中,图像是存在的,我可以打开它。看起来浏览器(chrome)无法将下载的文件识别为图像。

希望大家都有主意。可能是文件头的问题?

我用一个submit form按钮调用脚本,然后在您停留在同一页面上时下载文件。

// ####################### Part 1, Render the image #######################

//content type

header('Content-type: image/jpeg');

//font

$font = 'assets/medium.otf';

//font size

$font_size = 16;

//image width

$width = 400;

//text margin

$margin = 15;

//text

$text = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.';

//explode text by words

$text_a = explode(' ', $text);

$text_new = '';

foreach($text_a as $word){

//Create a new text, add the word, and calculate the parameters of the text

$box = imagettfbbox($font_size, 0, $font, $text_new.' '.$word);

//if the line fits to the specified width, then add the word with a space, if not then add word with new line

if($box[2] > $width - $margin*2){

$text_new .= "\n".$word;

} else {

$text_new .= " ".$word;

}

}

//trip spaces

$text_new = trim($text_new);

//new text box parameters

$box = imagettfbbox($font_size, 0, $font, $text_new);

//new text height

$height = $box[1] + $font_size + $margin * 2;

//create image

$im = imagecreatetruecolor($width, $height);

//create colors

$white = imagecolorallocate($im, 255, 255, 255);

$black = imagecolorallocate($im, 0, 0, 0);

//color image

imagefilledrectangle($im, 0, 0, $width, $height, $white);

//add text to image

imagettftext($im, $font_size, 0, $margin, $font_size+$margin, $black, $font, $text_new);

//return image

//imagejpeg($im);

imagejpeg($im,'images/text/name.jpg');

//frees any memory associated with image

imagedestroy($im);

// ####################### Part 2, download the image #######################

$file = 'images/text/name.jpg';

header("Expires: 0");

header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");

header("Cache-Control: no-store, no-cache, must-revalidate");

header("Cache-Control: post-check=0, pre-check=0", false);

header("Pragma: no-cache");

$ext = pathinfo($file, PATHINFO_EXTENSION);

$basename = pathinfo($file, PATHINFO_BASENAME);

header("Content-type: application/".$ext);

// tell file size

header('Content-length: '.filesize($file));

// set file name

header("Content-Disposition: attachment; filename=\"$basename\"");

readfile($file);

?>

编辑:

不知何故,当我移除这条线时,它就工作了:

header("Content-type: application/".$ext);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值