我有很多超大尺寸(高度,宽度)的jpeg图像,都有不同的尺寸和不同的宽高比。
我正在从这样的数据库中显示它们:
<img src="<?php echo $img1; ?>" width="300" height="400">
我想要的是某种php函数来显示图像的裁剪版本,如下所示:
cropjpeg('$img1');
例如,如果图像是600 W,700 H,那么php或GD会显示300 W左右的裁剪版本,从图像的左上角开始显示为400 H.
一些警告:
我无法使用CSS执行faux cropping
。如果你下载这个裁剪的图像,它只需要那个较小的裁剪版本。
我真的不想创建和保存新图像,所以我想我需要这个“动态”工作
我尝试了imagecreatefromjpeg和imagejpeg,但似乎header('Content-Type: image/jpeg')
;不是正确的答案,因为html页面上的内容多于此1图像
网站上有很多流量,所以必须轻装上去
这是我到目前为止找到的最好的,但它使用的是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');
?>
有什么想法吗?
答案 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包含的所有内容
[http://www.skillcorp.com.ve] [2]
[2]:http://www.skillcorp.com.ve这里还有更多信息关系