我在pngtojpgAction()
下的一个控制器中有以下代码,我正在使用ajax调用它。
通过这个
$this->getRequest()->getParam('imagedata'));
语句我得到了一个类似于data:image/jpeg;base64,/9j/4AAQSkZJR......AH9T796KtUV1HGf/Z
的模式
其是PNG图像数据。
现在我使用下面的代码来转换这个png图像到jpeg和增加dpi到300。
public function pngtojpgAction()
{
//Code to convert png to jpg image
$input = imagecreatefrompng($this->getRequest()->getParam('imagedata'));
$width=imagesx($input);
$height=imagesy($input);
$output = imagecreatetruecolor($width, $height);
$white = imagecolorallocate($output, 255, 255, 255);
imagefilledrectangle($output, 0, 0, $width, $height, $white);
imagecopy($output, $input, 0, 0, 0, 0, $width, $height);
ob_start();
imagejpeg($output);
$contents = ob_get_contents();
ob_end_clean();
//echo 'data:image/jpeg;base64,'.base64_encode($contents); /*Up to here code works well*/
$jpgImage='data:image/jpeg;base64,'.base64_encode($contents);
$image = file_get_contents($jpgImage);
$image = substr_replace($image, pack("cnn", 1, 300, 300), 13, 5);
header("Content-type: image/jpeg");
header('Content-Disposition: attachment; filename="'.basename($jpgImage).'"');
echo $image;
}
用这个
$image = substr_replace($image, pack("cnn", 1, 300, 300), 13, 5);
我想把图像的分辨率提高到300。
我无法使用以下代码行更改图像dpi
$jpgImage='data:image/jpeg;base64,'.base64_encode($contents);
$image = file_get_contents($jpgImage);
$image = substr_replace($image, pack("cnn", 1, 300, 300), 13, 5);
header("Content-type: image/jpeg");
header('Content-Disposition: attachment; filename="'.basename($jpgImage).'"');
echo $image;
我使用此链接作为参考Change image dpi using php
3条答案
按热度按时间mwg9r5ms1#
在做了一些改变之后,它对我起作用了。
e5njpo682#
我会用imagemic来代替:
但你也可以和动力局一起做。
Link to class
在Windows环境下测试。
xyhw6mcr3#
简单的代码来重新生成可调质量的图像。
注意:确保安装了PHP的GD库。