无法使用PHP在PDF中显示调整大小的图像
我正在尝试从外部URL加载图像,然后调整其大小并在PDF中显示。目前,我正试图使用单个图像来实现它,但整个功能将在无法使用PHP在PDF中显示调整大小的图像,php,pdf,image-resizing,Php,Pdf,Image Resizing,我正在尝试从外部URL加载图像,然后调整其大小并在PDF中显示。目前,我正试图使用单个图像来实现它,但整个功能将在foreach循环中,用于处理大量非常大的图像 首先,我调整了图像的大小,然后获取图像的内容,应用base65编码,从中构建一个源字符串,并将该字符串添加到我的img src标记中。这是我的密码- $filename = 'https://jooinn.com/images/nature-319.jpg'; // URL of the image $percent =
foreach
循环中,用于处理大量非常大的图像
首先,我调整了图像的大小,然后获取图像的内容,应用base65编码,从中构建一个源字符串,并将该字符串添加到我的img src标记中。这是我的密码-
$filename = 'https://jooinn.com/images/nature-319.jpg'; // URL of the image
$percent = 0.25; // percentage of resize
// Content type
header('Content-type: image/jpeg');
// Get new dimensions
list($width, $height) = getimagesize($filename);
$new_width = $width * $percent;
$new_height = $height * $percent;
// Resample
$image_p = imagecreatetruecolor($new_width, $new_height);
$image = imagecreatefromjpeg($filename);
imagecopyresampled($image_p, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
// Output
$imageData = base64_encode(file_get_contents($image_p));
// Format the image SRC: data:{mime};base64,{data};
$src = 'data: '.mime_content_type($image_p).';base64,'.$imageData;
// Echo out a sample image
echo '<img src="' . $src . '">';
imagedestroy($image_p);
事实上,正如您所说,代码中的以下行是错误的:
$imageData = base64_encode(file_get_contents($image_p));
$image\p
变量不是文件名,而是由ImageCreateTureColor创建的资源。
首先必须使用imagejpeg()
将其转换为jpeg文件。
您可以避免在使用ob_*xxx*
函数编码到base64之前保存中间文件
ob_start();
imagejpeg($image_p);
$imageContent = ob_get_contents();
$imageData = base64_encode($imageContent);
ob_end_clean();
这一行也有问题,因为$image\p
不是文件名:
$src = 'data: '.mime_content_type($image_p).';base64,'.$imageData;
创建jpeg文件时,应将其替换为:
$src = 'data: image/jpeg;base64,'.$imageData;
为方便起见,以下是完整的工作脚本:
$filename = 'https://jooinn.com/images/nature-319.jpg'; // URL of the image
$percent = 0.25; // percentage of resize
// Content type
header('Content-type: image/jpeg');
// Get new dimensions
list($width, $height) = getimagesize($filename);
$new_width = $width * $percent;
$new_height = $height * $percent;
// Resample
$image_p = imagecreatetruecolor($new_width, $new_height);
$image = imagecreatefromjpeg($filename);
imagecopyresampled($image_p, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
// Output
ob_start();
imagejpeg($image_p);
$imageContent = ob_get_contents();
$imageData = base64_encode($imageContent);
ob_end_clean();
// Format the image SRC: data:{mime};base64,{data};
$src = 'data: image/jpeg;base64,'.$imageData;
// Echo out a sample image
echo '<img src="' . $src . '">';
imagedestroy($image_p);
$filename='0https://jooinn.com/images/nature-319.jpg'; // 图像的URL
$percent=0.25;//调整大小的百分比
//内容类型
标题(“内容类型:图像/jpeg”);
//获取新维度
列表($width,$height)=getimagesize($filename);
$new_width=$width*$percent;
$new_height=$height*$percent;
//重采样
$image\u p=imagecreatetruecolor($new\u width,$new\u height);
$image=imagecreatefromjpeg($filename);
imagecopyresampled($image\u p,$image,0,0,0,$new\u width,$new\u height,$width,$height);
//输出
ob_start();
图像JPEG($image\u p);
$imageContent=ob_get_contents();
$imageData=base64_编码($imageContent);
ob_end_clean();
//格式化图像SRC:data:{mime};base64,{data};
$src='数据:图像/jpeg;base64,.$imageData;
//回显样本图像
回声';
图像销毁($image\u p);
您能告诉我如何在foreach循环中为多个图像实现这一点吗?我在foreach循环中得到了超过2次迭代的空响应。这和输出缓冲区管理有关吗?
$filename = 'https://jooinn.com/images/nature-319.jpg'; // URL of the image
$percent = 0.25; // percentage of resize
// Content type
header('Content-type: image/jpeg');
// Get new dimensions
list($width, $height) = getimagesize($filename);
$new_width = $width * $percent;
$new_height = $height * $percent;
// Resample
$image_p = imagecreatetruecolor($new_width, $new_height);
$image = imagecreatefromjpeg($filename);
imagecopyresampled($image_p, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
// Output
ob_start();
imagejpeg($image_p);
$imageContent = ob_get_contents();
$imageData = base64_encode($imageContent);
ob_end_clean();
// Format the image SRC: data:{mime};base64,{data};
$src = 'data: image/jpeg;base64,'.$imageData;
// Echo out a sample image
echo '<img src="' . $src . '">';
imagedestroy($image_p);