php 魔术师调整大小 - 显示图像而不是保存到文件夹
Posted
技术标签:
【中文标题】php 魔术师调整大小 - 显示图像而不是保存到文件夹【英文标题】:php magician resize - display image instead of saving to the folder 【发布时间】:2014-09-04 05:02:48 【问题描述】:我正在尝试调整图像大小并将其显示在浏览器上。我正在使用 php_image_magician 来调整数据库中的图像大小。它成功调整了图像的大小。我想显示图像而不是 saveImage ($magicianObj -> saveImage('img.jpeg');
)。如何正确回显此图像echo "<img src='".???."' />";
require_once(PAGEINC.'php_image_magician.php');
$magicianObj = new imageLib("http://localhost".$newsfirstimgpath);
$magicianObj -> resizeImage(50, 50, 'crop');
$magicianObj -> saveImage('img.jpeg');
【问题讨论】:
你的意思是 header('Content-Type: image/jpeg'); echo(file_get_contents("img.jpeg")); 我想显示图像而不是保存图像。我不想将调整大小的图像保存到文件夹 你试过 $im = $magicianObj -> resizeImage(50, 50, 'crop') 然后 header('Content-Type: image/jpeg'); // 输出图片 imagejpeg($im); 将图像保存在临时文件夹中,然后回显<img src="tempfolder/imageXXX.jpg" />
?
【参考方案1】:
你可以使用库的displayImage
函数如下:
$magicianObj->displayImage('jpeg',100); // first param tells display as jpeg and second specifies the quality of the image
您可以在 this link 检查第 2529 行以获取 displayImage
参考中的其他可用功能
编辑
在php_image_magician.php
中的displayImage函数上方添加以下函数
public function getImageSrc($fileType = 'jpg')
ob_start();
if (!is_resource($this->imageResized)) if ($this->debug) die('saveImage: This is not a resource.'); else die();
switch($fileType)
case 'jpg':
case 'jpeg':
imagejpeg($this->imageResized, NULL, $imageQuality);
break;
case 'gif':
imagegif($this->imageResized);
break;
case 'png':
// *** Scale quality from 0-100 to 0-9
$scaleQuality = round(($imageQuality/100) * 9);
// *** Invert qualit setting as 0 is best, not 9
$invertScaleQuality = 9 - $scaleQuality;
imagepng($this->imageResized, NULL, $invertScaleQuality);
break;
case 'bmp':
die('bmp file format is not supported.');
break;
default:
// *** No extension - No save.
die('file extension not supported.');
break;
$response = ob_get_contents();
ob_end_clean();
return 'data:image/'.$fileType.';base64,' . base64_encode( $response );
并使用以下代码回显图像:
echo '<img src="'.$magicianObj->getImageSrc('jpeg').'" />';
【讨论】:
imagejpeg(): 文件名不能为空2519行错误 看起来库中存在错误,您可以做一件事,将displayImage
函数中的 imagejpeg($this->imageResized, '', $imageQuality);
更改为 imagejpeg($this->imageResized, NULL, $imageQuality);
并为其他类似的函数执行此操作,例如 imagepng
也。以上是关于php 魔术师调整大小 - 显示图像而不是保存到文件夹的主要内容,如果未能解决你的问题,请参考以下文章
这个调整图像大小/裁剪图像的逻辑是不是正确(在 php 中,但它是关于逻辑而不是代码)