如何将图像剪切成网页

时间:2009-09-11 13:29:34

标签: php javascript css

我想在我的网页上展示一部分图片。假设原始格式为1024x768,则显示的图像必须为100x768。它不是重新尺寸,而是从0,0像素开始的简单切割。有什么建议吗?

6 个答案:

答案 0 :(得分:8)

使用CSS的剪辑属性:

img { position:absolute; clip:rect(0px 60px 200px 0px) }

或者在容器上使用溢出:

<div style="overflow:hidden; width:100px; height:76px;">
  <img src="myImage.jpg" />
</div>

答案 1 :(得分:3)

您可以使用CSS clip仅显示图片的一部分,例如:

img {
    position:absolute;
    clip:rect(0px,100px,768px,0px);
}

答案 2 :(得分:1)

裁剪图像或使用现有的库,WideImage是此类操作的最佳选择之一。

答案 3 :(得分:1)

使用图像编辑器将图像上载到服务器之前裁剪图像。除非由于某种原因你需要加载整个图像但是切断了......

答案 4 :(得分:1)

另一种解决方案是将图像作为背景图像插入。

<div style="width: 768px; height: 100px; background: url(theimage.jpg) no-repeat left top;"></div>

答案 5 :(得分:0)

请注意,CSS解决方案实际上下载了整个图像,然后只显示它的顶部。

根据使用情况,我建议使用动态裁剪脚本或缓存预裁剪图像。

裁剪脚本类似于:

<?php

// get parameters
$fname = (string) $_GET['f'];
$top = (int) $_GET['h'];

// load original
$old = imagecreatefromjpeg($fname);
list($width, $height) = getimagesize($fname);
   // N.B. this reloads the whole image! Any way to get
   // width/height directly from $old resource handle??

// create new canvas
$new = imagecreatetruecolor($width, $top);

// copy portion of image
imagecopy($dest, $src, 0, 0, 0, 0, $width, $top);

// Output and free from memory
header('Content-Type: image/jpeg');
imagejpg($new);

?>

将从您的网页调用,如:

<img src="crop.php?f=myimg.jpg&h=100" />