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-&gt;imageResized, '', $imageQuality); 更改为 imagejpeg($this-&gt;imageResized, NULL, $imageQuality); 并为其他类似的函数执行此操作,例如 imagepng也。

以上是关于php 魔术师调整大小 - 显示图像而不是保存到文件夹的主要内容,如果未能解决你的问题,请参考以下文章

这个调整图像大小/裁剪图像的逻辑是不是正确(在 php 中,但它是关于逻辑而不是代码)

PHP调整图像大小并保存为透明PNG

PHP 如何自动使用调整大小的图像而不是原件| WordPress的

在 PHP 中将图像裁剪为正方形,而不是调整为相同的纵横比

php - 调整大小并保存图像? [复制]

如何自动使用调整大小的图像而不是原稿| Wordpress