在PHP / GD中显示jpeg的裁剪部分?

时间:2012-08-25 07:19:54

标签: php image gd crop

我有很多超大尺寸(高度,宽度)的jpeg图像,都有不同的尺寸和不同的宽高比。

我正在从这样的数据库中显示它们:

<img src="<?php echo $img1; ?>" width="300" height="400">

我想要的是某种php函数来显示图像的裁剪版本,如下所示:

cropjpeg('$img1');

例如,如果图像是600 W,700 H,那么php或GD会显示300 W左右的裁剪版本,从图像的左上角开始显示为400 H.

一些警告:

  1. 我无法使用CSS执行faux cropping。如果你下载这个裁剪的图像,它只需要那个较小的裁剪版本。

  2. 我真的不想创建和保存新图像,所以我想我需要这个“动态”工作

  3. 我尝试了imagecreatefromjpeg和imagejpeg,但似乎header('Content-Type: image/jpeg');不是正确的答案,因为html页面上的内容多于此1图像

  4. 网站上有很多流量,所以必须轻装上去

  5. 这是我到目前为止找到的最好的,但它使用的是header('Content-Type: image/jpeg');

    <?php
        function cropjpeg($img, $x, $y, $width, $height,$grade=5)
        {
            // Create image instances
            $src = imagecreatefromjpeg($img);
            $dest = imagecreatetruecolor(400, 300);
    
            // Copy
            imagecopy($dest, $src, 0, 0, 20, 13, 400, 300);
    
            // Output and free from memory
            header('Content-Type: image/jpeg');
            imagejpeg($dest);
    
            imagedestroy($dest);
            imagedestroy($src);
        }
        cropjpeg('images/bikini.jpg');
    
    ?>
    

    有什么想法吗?

3 个答案:

答案 0 :(得分:2)

您无法在实际的html网页中裁剪图片,因为需要对其进行处理,如果您不想将其保存在磁盘上,则无法进行裁剪。

您可以将裁剪脚本转储到带有标题的单个PHP文件中,并使用路径从HTML调用脚本,例如:

<img src="http://www.example.org/crop.php?i=bikini.jpg&x=13&y=20&w=400&h=300" alt="" />

在脚本中你可以使用

<?php

     header('Content-Type: image/jpeg');
     function cropjpeg($img, $x, $y, $width, $height,$grade=5) {
         //......................
         imagecopy($dest, $src, 0, 0, $x, $y, $width, $height);
         //......................
     }

     cropjpeg('images/'.$_GET['i'], (int)$_GET['x'], (int)$_GET['y'], (int)$_GET['w'], (int)$_GET['h']);
?>

您应该考虑宽高比,并搜索更好的裁剪脚本,您不必重新发明轮子。

答案 1 :(得分:0)

使用mod_rewrite将相关图像文件路径的请求发送到PHP脚本,该脚本执行裁剪并将图像数据作为响应发回。它看起来像是页面上的普通图像标记,但图像实际上是由您单独的脚本提供的。

唯一的问题是你同时不想保存裁剪的文件,但是有很多流量所以想要“轻轻地”。你不能两种方式。如果您不想在每次请求时重新裁剪图像,则需要保存裁剪版本,以便在将来的请求中重新提供这些版本。

答案 2 :(得分:0)

这是一个包含非常完整教程的页面,其中包含使用ajax包含的所有内容

crop with jquery and php

[http://www.skillcorp.com.ve] [2]

[2]:http://www.skillcorp.com.ve这里还有更多信息关系