好的,我发布这个的原因是因为我不确定要搜索什么。我会尽可能清楚地解释它。
说,我的图像尺寸为800x600。我为图像分配的盒子是150x150,必须始终满意。我只能允许图像的高度和宽度最大显示为150px。因此,从技术上讲,图像必须缩小到200x150。
现在,问题:
有没有办法可以裁剪高度,只显示150x150?这仅用于查看目的。我不需要将图像保存为新文件。
一个很好的例子就是你在Twitter上的个人资料页面。它会显示您的个人资料图片被裁剪,但当您点击它时,您仍会获得最初上传的图像。
[编辑] 这就是我想要实现的目标。在像素方面获得较小的一面,将其调整为150px然后隐藏另一侧的溢出部分。再次,没有涉及到储蓄。只为了人们的观赏乐趣。
答案 0 :(得分:27)
我使用一个简单的PHP类,它有几个调整大小的选项。您可以通过此类轻松存储缩略图。正如@jeroen所说,你只需要做一次就可以缓存它们。它只需要PHP5和GD库。这是用法示例:
// *** Include the class
include("resize-class.php");
// *** 1) Initialise / load image
$resizeObj = new resize('sample.jpg');
// *** 2) Resize image (options: exact, portrait, landscape, auto, crop)
$resizeObj -> resizeImage(150, 150, 'crop');
// *** 3) Save image ('image-name', 'quality [int]')
$resizeObj -> saveImage('sample-resized.jpg', 100);
这就是那个课程:
<?php
Class resize
{
// *** Class variables
private $image;
private $width;
private $height;
private $imageResized;
function __construct($fileName)
{
// *** Open up the file
$this->image = $this->openImage($fileName);
// *** Get width and height
$this->width = imagesx($this->image);
$this->height = imagesy($this->image);
}
## --------------------------------------------------------
private function openImage($file)
{
// *** Get extension
$extension = strtolower(strrchr($file, '.'));
switch($extension)
{
case '.jpg':
case '.jpeg':
$img = @imagecreatefromjpeg($file);
break;
case '.gif':
$img = @imagecreatefromgif($file);
break;
case '.png':
$img = @imagecreatefrompng($file);
break;
default:
$img = false;
break;
}
return $img;
}
## --------------------------------------------------------
public function resizeImage($newWidth, $newHeight, $option="auto")
{
// *** Get optimal width and height - based on $option
$optionArray = $this->getDimensions($newWidth, $newHeight, $option);
$optimalWidth = $optionArray['optimalWidth'];
$optimalHeight = $optionArray['optimalHeight'];
// *** Resample - create image canvas of x, y size
$this->imageResized = imagecreatetruecolor($optimalWidth, $optimalHeight);
imagecopyresampled($this->imageResized, $this->image, 0, 0, 0, 0, $optimalWidth, $optimalHeight, $this->width, $this->height);
// *** if option is 'crop', then crop too
if ($option == 'crop') {
$this->crop($optimalWidth, $optimalHeight, $newWidth, $newHeight);
}
}
## --------------------------------------------------------
private function getDimensions($newWidth, $newHeight, $option)
{
switch ($option)
{
case 'exact':
$optimalWidth = $newWidth;
$optimalHeight= $newHeight;
break;
case 'portrait':
$optimalWidth = $this->getSizeByFixedHeight($newHeight);
$optimalHeight= $newHeight;
break;
case 'landscape':
$optimalWidth = $newWidth;
$optimalHeight= $this->getSizeByFixedWidth($newWidth);
break;
case 'auto':
$optionArray = $this->getSizeByAuto($newWidth, $newHeight);
$optimalWidth = $optionArray['optimalWidth'];
$optimalHeight = $optionArray['optimalHeight'];
break;
case 'crop':
$optionArray = $this->getOptimalCrop($newWidth, $newHeight);
$optimalWidth = $optionArray['optimalWidth'];
$optimalHeight = $optionArray['optimalHeight'];
break;
}
return array('optimalWidth' => $optimalWidth, 'optimalHeight' => $optimalHeight);
}
## --------------------------------------------------------
private function getSizeByFixedHeight($newHeight)
{
$ratio = $this->width / $this->height;
$newWidth = $newHeight * $ratio;
return $newWidth;
}
private function getSizeByFixedWidth($newWidth)
{
$ratio = $this->height / $this->width;
$newHeight = $newWidth * $ratio;
return $newHeight;
}
private function getSizeByAuto($newWidth, $newHeight)
{
if ($this->height < $this->width)
// *** Image to be resized is wider (landscape)
{
$optimalWidth = $newWidth;
$optimalHeight= $this->getSizeByFixedWidth($newWidth);
}
elseif ($this->height > $this->width)
// *** Image to be resized is taller (portrait)
{
$optimalWidth = $this->getSizeByFixedHeight($newHeight);
$optimalHeight= $newHeight;
}
else
// *** Image to be resizerd is a square
{
if ($newHeight < $newWidth) {
$optimalWidth = $newWidth;
$optimalHeight= $this->getSizeByFixedWidth($newWidth);
} else if ($newHeight > $newWidth) {
$optimalWidth = $this->getSizeByFixedHeight($newHeight);
$optimalHeight= $newHeight;
} else {
// *** Sqaure being resized to a square
$optimalWidth = $newWidth;
$optimalHeight= $newHeight;
}
}
return array('optimalWidth' => $optimalWidth, 'optimalHeight' => $optimalHeight);
}
## --------------------------------------------------------
private function getOptimalCrop($newWidth, $newHeight)
{
$heightRatio = $this->height / $newHeight;
$widthRatio = $this->width / $newWidth;
if ($heightRatio < $widthRatio) {
$optimalRatio = $heightRatio;
} else {
$optimalRatio = $widthRatio;
}
$optimalHeight = $this->height / $optimalRatio;
$optimalWidth = $this->width / $optimalRatio;
return array('optimalWidth' => $optimalWidth, 'optimalHeight' => $optimalHeight);
}
## --------------------------------------------------------
private function crop($optimalWidth, $optimalHeight, $newWidth, $newHeight)
{
// *** Find center - this will be used for the crop
$cropStartX = ( $optimalWidth / 2) - ( $newWidth /2 );
$cropStartY = ( $optimalHeight/ 2) - ( $newHeight/2 );
$crop = $this->imageResized;
//imagedestroy($this->imageResized);
// *** Now crop from center to exact requested size
$this->imageResized = imagecreatetruecolor($newWidth , $newHeight);
imagecopyresampled($this->imageResized, $crop , 0, 0, $cropStartX, $cropStartY, $newWidth, $newHeight , $newWidth, $newHeight);
}
## --------------------------------------------------------
public function saveImage($savePath, $imageQuality="100")
{
// *** Get extension
$extension = strrchr($savePath, '.');
$extension = strtolower($extension);
switch($extension)
{
case '.jpg':
case '.jpeg':
if (imagetypes() & IMG_JPG) {
imagejpeg($this->imageResized, $savePath, $imageQuality);
}
break;
case '.gif':
if (imagetypes() & IMG_GIF) {
imagegif($this->imageResized, $savePath);
}
break;
case '.png':
// *** Scale quality from 0-100 to 0-9
$scaleQuality = round(($imageQuality/100) * 9);
// *** Invert quality setting as 0 is best, not 9
$invertScaleQuality = 9 - $scaleQuality;
if (imagetypes() & IMG_PNG) {
imagepng($this->imageResized, $savePath, $invertScaleQuality);
}
break;
// ... etc
default:
// *** No extension - No save.
break;
}
imagedestroy($this->imageResized);
}
## --------------------------------------------------------
}
?>
答案 1 :(得分:4)
加载图像,先调整大小,使其最小边为150,然后裁剪到相对于中心的150宽度/高度。然后你只输出你的图像:
WideImage::load('yourfile.png/jpg/...')
->resize(150, 150, 'outside', 'any')
->crop('center', 'center', 150, 150)
->output('png');
您可以在此处找到源代码,文档,在线演示和API文档:WideImage。
如果您还有疑问,请告诉我。
答案 2 :(得分:4)
它非常易于使用 这是班级http://timthumb.googlecode.com/svn/trunk/timthumb.php 这是params http://viralpatel.net/blogs/resize-image-dynamically-php/ 我测试过看起来很棒
例子是 &LT; img src =“/ script / timthumb.php?src = / some / path / myimage.png&amp; w = 100&amp; h = 80” alt =“resized image”/&gt;
答案 3 :(得分:2)
为什么不用CSS做这个,而不必使用服务器进行任何处理?有几种方法可以使用CSS实现此目的。 Clip方法是我之前使用过的方法,谷歌搜索会带给你几个结果。 Here是一个涵盖此井的网站
答案 4 :(得分:2)
我会存储缩略图,这样你只需要执行一次就可以缓存它们。如果你的宽高比是固定的,我会缩小它以适应200x200的盒子(这里有一些关于这个的php答案所以我会跳过它)。如果宽高比不同,我会使用安全值,以便它始终覆盖您的150x150盒子(如300x300)。
然后我会将缩略图设置为css中图像框的背景图像,您可以获得所需的效果:
.img_box {
background-repeat: no-repeat;
background-position: center center;
background-image: url(/path/to/image);
}
要增强支持css3的浏览器的体验,您可以设置:
background-size: cover;
到框中,使其完全适合(保持纵横比)。
答案 5 :(得分:1)
<?php
$output_width =80;
$output_height=80;
if(isset($_GET['height'])){
$output_height=$_GET['height'];
}
if(isset($_GET['width'])){
$output_width=$_GET['width'];
}
$path = ( (isset($_REQUEST['path']))? $_REQUEST['path'] : "");
//echo $path;exit;
$size_arr = getimagesize($path);
if ($size_arr[2]==IMAGETYPE_GIF)
$image = imagecreatefromgif($path);
else if ($size_arr[2]==IMAGETYPE_JPEG)
$image = imagecreatefromjpeg($path);
else if ($size_arr[2]==IMAGETYPE_PNG)
$image = imagecreatefrompng($path);
else
die_default_image();
$tmpname = tempnam( sys_get_temp_dir() , "phptmp");
resize_image($tmpname, $image, $size_arr, $output_width, $output_height);
header('Content-Type: image/jpg');
header('Content-Disposition: inline; filename="'.basename($path).'"');
echo file_get_contents( $tmpname );
unlink( $tmpname );
die('');
function die_default_image()
{
//43byte 1x1 transparent pixel gif
header("content-type: image/gif");
echo base64_decode("R0lGODlhAQABAIAAAAAAAAAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==");
}
function resize_image($thumbname, $image, $size_arr, $max_width, $max_height)//maintain aspect ratio
{
$width = $max_width;
$height = $max_height;
list($width_orig, $height_orig, $img_type) = $size_arr;
$ratio_orig = $width_orig/$height_orig;
if ($width/$height > $ratio_orig) {
$width = floor($height*$ratio_orig);
} else {
$height = floor($width/$ratio_orig);
}
// Resample
$tempimg = imagecreatetruecolor($width, $height);
imagecopyresampled($tempimg, $image, 0, 0, 0, 0, $width, $height, $width_orig, $height_orig);
imagejpeg($tempimg, $thumbname, 80);
}
if (!function_exists('sys_get_temp_dir')) {
function sys_get_temp_dir() {
if (!empty($_ENV['TMP'])) { return realpath($_ENV['TMP']); }
if (!empty($_ENV['TMPDIR'])) { return realpath( $_ENV['TMPDIR']); }
if (!empty($_ENV['TEMP'])) { return realpath( $_ENV['TEMP']); }
$tempfile=tempnam(uniqid(rand(),TRUE),'');
if (file_exists($tempfile)) {
unlink($tempfile);
return realpath(dirname($tempfile));
}
}
}
?>
将文件另存为imageresize.php并将此文件放入图像文件夹中,只需使用此类代码即可显示图像
<img src="<?=base_url().'uploads/imageresize.php?path='.$image."&width=150 &height=150";?>" />
您可以使用此代码显示不同尺寸的图像。
答案 6 :(得分:1)
这是我的Image Resize Class。 Class可以获得你想要的结果(裁剪/居中裁剪/等等)......以及更多; - )
我不解释一切,但如果你有任何问题,请问我。
<?php
final class Img {
/**
* Usage:
* Img::resizeImage( 'sample.png', null, array( 'x' => 150, 'y' => 150 ) )
* Outputs a Image
*
* Img::resizeImage( 'sample.png', 'crop.jpg', array( 'x' => 200, 'y' => 200 ) )
* Saves a Image
*
* @static
* @param string $source
* @param null|string $destination
* @param array $options
* @return void
* @throws Exception
*/
public static function resizeImage( $source, $destination = null, $options = array() ) {
if( !file_exists( $source ) || ( is_string( $destination ) && !is_writable( dirname( $destination ) ) ) ) {
throw new Exception( 'Quelldatei existiert nicht oder Zielverzeichnis ist nicht beschreibbar.' );
}
#@ini_set ('memory_limit', '64M' );
$defaultOptions = array(
'x' => 100,
'y' => 100,
'maxX' => 1000,
'maxY' => 1000,
'zoom_crop' => 1,
'quality' => 90,
'align' => 'c', // [c]enter, [b]ottom, [t]op, [l]eft, [r]ight
'filters' => '',
'sharpen' => 0,
'canvas' => 'ffffff',
);
$options = array_merge( $defaultOptions, $options );
$sData = getimagesize( $source );
$origType = $sData[2];
$mimeType = $sData['mime'];
if( !preg_match( '/^image\/(?:gif|jpg|jpeg|png)$/i', $mimeType ) ) {
throw new Exception( 'The image being resized is not a valid gif, jpg or png.' );
}
if( !function_exists( 'imagecreatetruecolor' ) ) {
throw new Exception( 'GD Library Error: imagecreatetruecolor does not exist' );
}
if( function_exists( 'imagefilter' ) && defined( 'IMG_FILTER_NEGATE' ) ) {
$imageFilters = array (
1 => array (IMG_FILTER_NEGATE, 0),
2 => array (IMG_FILTER_GRAYSCALE, 0),
3 => array (IMG_FILTER_BRIGHTNESS, 1),
4 => array (IMG_FILTER_CONTRAST, 1),
5 => array (IMG_FILTER_COLORIZE, 4),
6 => array (IMG_FILTER_EDGEDETECT, 0),
7 => array (IMG_FILTER_EMBOSS, 0),
8 => array (IMG_FILTER_GAUSSIAN_BLUR, 0),
9 => array (IMG_FILTER_SELECTIVE_BLUR, 0),
10 => array (IMG_FILTER_MEAN_REMOVAL, 0),
11 => array (IMG_FILTER_SMOOTH, 0),
);
}
$destX = min( $options['x'], $options['maxX'] );
$destY = min( $options['y'], $options['maxY'] );
switch( $mimeType ) {
case 'image/jpg':
case 'image/jpeg':
case 'image/pjgpg':
$image = imagecreatefromjpeg( $source );
break;
case 'image/png':
$image = imagecreatefrompng( $source );
break;
case 'image/gif':
$image = imagecreatefromgif( $source );
break;
}
if( !isset( $image ) ) {
throw new Exception( 'Could not open Image' );
}
$width = imagesx( $image );
$height = imagesy( $image );
$originX = $originY = 0;
if( $destX > 0 && $destY == 0 ) {
$destY = floor( $height * ( $destX / $width ) );
} else if( $destY > 0 && $destX == 0 ) {
$destX = floor( $width * ( $destY / $height ) );
}
// scale down and add borders
if( $options['zoom_crop'] == 3 ) {
$finalY = $height * ( $destX / $width );
if( $finalY > $destY ) {
$destX = $width * ( $destY / $height );
} else {
$destY = $finalY;
}
}
$canvas = imagecreatetruecolor( $destX, $destY );
imagealphablending( $canvas, false );
if( strlen( $options['canvas'] ) < 6 ) {
$options['canvas'] = 'ffffff';
}
$canvasColorR = hexdec( substr( $options['canvas'], 0, 2 ) );
$canvasColorG = hexdec( substr( $options['canvas'], 2, 2 ) );
$canvasColorB = hexdec( substr( $options['canvas'], 2, 2 ) );
// transparentes bild erstellen
$color = imagecolorallocatealpha( $canvas, $canvasColorR, $canvasColorG, $canvasColorB, 127 );
imagefill( $canvas, 0, 0, $color );
// scale down and add borders
if( $options['zoom_crop'] == 2 ) {
$finalY = $height * ( $destX / $width );
if( $finalY > $destY ) {
$originX = $destX / 2;
$destX = $width * ( $destY / $height );
$originX = round( $originX - ( $destX / 2 ) );
} else {
$originY = $destY / 2;
$destY = $finalY;
$originY = round( $originY - ( $destY / 2 ) );
}
}
// restore transparency blending
imagesavealpha( $canvas, true );
if( $options['zoom_crop'] > 0 ) {
$srcX = $srcY = 0;
$srcW = $width;
$srcH = $height;
$cmpX = $width / $destX;
$cmpY = $height / $destY;
// calculate x or y coordinate and width or height of source
if( $cmpX > $cmpY ) {
// breitformat
$srcW = round( $width / $cmpX * $cmpY );
$srcX = round( ( $width - ( $width / $cmpX * $cmpY ) ) / 2 );
} elseif( $cmpY > $cmpX ) {
$srcH = round( $height / $cmpY * $cmpX );
$srcY = round( ( $height - ( $height / $cmpY * $cmpX ) ) / 2 );
}
// pos cropping
if( strlen( $options['align'] ) ) {
if( strpos( $options['align'], 't') !== false) {
$srcY = 0;
}
if( strpos( $options['align'], 'b') !== false) {
$srcY = $height - $srcH;
}
if( strpos( $options['align'], 'l') !== false) {
$srcX = 0;
}
if( strpos( $options['align'], 'r') !== false) {
$srcX = $width - $srcW;
}
}
imagecopyresampled( $canvas, $image, $originX, $originY, $srcX, $srcY, $destX, $destY, $srcW, $srcH );
} else {
imagecopyresampled( $canvas, $image, 0, 0, 0, 0, $destX, $destY, $width, $height );
}
// @todo filtermöglichkeit über optionen ausbessern
if( strlen( $options['filters'] ) && function_exists( 'imagefilter' ) && defined( 'IMG_FILTER_NEGATE' ) ) {
// apply filters to image
$filterList = explode( '|', $options['filters'] );
foreach( $filterList as $fl ) {
$filterSettings = explode (',', $fl);
if (isset ($imageFilters[$filterSettings[0]])) {
for ($i = 0; $i < 4; $i ++) {
if (!isset ($filterSettings[$i])) {
$filterSettings[$i] = null;
} else {
$filterSettings[$i] = (int) $filterSettings[$i];
}
}
switch ($imageFilters[$filterSettings[0]][1]) {
case 1:
imagefilter ($canvas, $imageFilters[$filterSettings[0]][0], $filterSettings[1]);
break;
case 2:
imagefilter ($canvas, $imageFilters[$filterSettings[0]][0], $filterSettings[1], $filterSettings[2]);
break;
case 3:
imagefilter ($canvas, $imageFilters[$filterSettings[0]][0], $filterSettings[1], $filterSettings[2], $filterSettings[3]);
break;
case 4:
imagefilter ($canvas, $imageFilters[$filterSettings[0]][0], $filterSettings[1], $filterSettings[2], $filterSettings[3], $filterSettings[4]);
break;
default:
imagefilter ($canvas, $imageFilters[$filterSettings[0]][0]);
break;
}
}
}
}
if( $options['sharpen'] > 0 && function_exists( 'imageconvolution' ) ) {
$sharpenMatrix = array (
array (-1,-1,-1),
array (-1,16,-1),
array (-1,-1,-1),
);
$divisor = 8;
$offset = 0;
imageconvolution( $canvas, $sharpenMatrix, $divisor, $offset );
}
//Straight from Wordpress core code. Reduces filesize by up to 70% for PNG's
if( ( IMAGETYPE_PNG == $origType || IMAGETYPE_GIF == $origType ) &&
function_exists( 'imageistruecolor' ) && !imageistruecolor( $image ) &&
imagecolortransparent( $image ) > 0 ) {
imagetruecolortopalette( $canvas, false, imagecolorstotal( $image ) );
}
if( null === $destination ) {
header( "Cache-Control: no-store, no-cache, must-revalidate" );
header( "Cache-Control: post-check=0, pre-check=0", false);
header( "Pragma: no-cache" );
header( "Expires: Sat, 26 Jul 1997 05:00:00 GMT" );
header( "Last-Modified: " . date( "D, d M Y H:i:s" ) . " GMT" );
}
switch( $mimeType ) {
case 'image/jpg':
case 'image/jpeg':
case 'image/pjgpg':
if( null === $destination ) {
header("Content-type: image/jpeg");
}
@imagejpeg( $canvas, $destination, $options['quality'] );
break;
case 'image/png':
if( null === $destination ) {
header("Content-type: image/png");
}
@imagepng( $canvas, $destination, floor( $options['quality'] * 0.09 ) );
break;
case 'image/gif':
if( null === $destination ) {
header("Content-type: image/gif");
}
@imagegif( $canvas, $destination );
break;
default:
throw new Exception( 'Fehler beim schreiben' );
break;
}
imagedestroy( $canvas );
imagedestroy( $image );
}
}
答案 7 :(得分:1)
我完全不知道这一点,但是一旦我创建了一个可以查看我们图像缩略图的程序。代码是这样的:
$src=imagecreatefromjpg("file.jpg");
$dest=imagecreatetruecolor($destwidth,$destheight);
$src1=imagecopyresized($dest,$src,0,0,0,0,$destwidth,$destheight,$widthresource,$heightresource);
echo imagejpeg($dest);
更改imagecopyresized的参数设置为0,0,0,0这里将裁剪图像从x1,y1到x2,y2希望这有帮助
答案 8 :(得分:0)
我有一个 shell脚本,可以完全满足ImageMagick所需的内容:
#!/bin/sh
SOURCE='/path/to/img'
FILE='myfile.jpg'
convert $SOURCE/$FILE -thumbnail 150x150^\> -quality 85% \
-gravity center -extent 150x150 ${SOURCE}150/$FILE
^
之后的150x150
是必不可少的! -thumbnail
选项会删除除颜色配置文件以外的所有元信息,并且非常快。-gravity center -extent 150x150
) - 正是你想要的。 -quality 85%
,这应该是充足的,同时减少文件大小。img
目录中获取图像,并将具有相同文件名的缩略图写入其旁边的img150
目录。尝试获得最佳效果。
我得到了帮助:
http://www.imagemagick.org/Usage/files/
http://www.imagemagick.org/Usage/resize/
http://www.imagemagick.org/script/command-line-options.php#thumbnail
答案 9 :(得分:0)
正如一些人所提到的,如果您没有保存图像,可以使用CSS完成。虽然加载时间会受到影响(下载800x600图像与下载150x150图像相比)。
HTML:
<div class="imgHold">
<img src="imgSrc.jpg" />
</div>
CSS:
div{
overflow:hidden;
}
img{
width:150px;
height:200px;
margin-top:-25px;
}
答案 10 :(得分:0)
你可以用jquery做到这一点。我假设你有一个你想要显示裁剪的图像的类名。例如,它可能是“.cropmyimage”,这是代码:
var objheight = 150;
var objwidth = 150;
$(".cropmyimage").each(function(){
var elem = $(this);
elem.wrap("<div class='cropperdiv'></div>");
var t = new Image();
t.src = elem.attr("src");
t.onload = function(){
var ratio1 = objwidth/objheight;
var ratio2 = t.width/t.height;
var newheight=0;
var newwidth=0;
if(ratio1 < ratio2){
newheight = parseInt(objheight);
newwidth = parseInt(objheight * ratio2);
}else{
newheight = parseInt(objwidth / ratio2);
newwidth = "width",objwidth;
}
elem.width(newwidth).height(newheight).css("margin-left",(objwidth-newwidth)/2).css("margin-top",(objheight-newheight)/2);
}
elem.parent("div.cropperdiv").css("overflow","hidden").width(objwidth).height(objheight);
});
答案 11 :(得分:0)
查看WideImage,一个用于图像处理的开源PHP库。可以得到一个简单的
WideImage::load('pic.jpg')->resize(150, 150, 'outside')->output('jpg');
答案 12 :(得分:-1)
这正是你正在寻找的,更进一步,缓存拇指:
检查http://phpthumb.gxdlabs.com/
您可以将此脚本用作script.php?img = image.jpg&amp; size = 100,在这种情况下,它们位于脚本的同一文件夹中。
<?php
require_once '/path/to/ThumbLib.inc.php';
$filename = $_GET['img'];
$path = "/upload/item/";
$thumb = $_GET['size'];
// Just let specific values
$sizeThumb = array('20','40','50','80','100','120','150');
if(in_array($thumb,$sizeThumb)){
$maxWidth = $thumb;
$maxHeight = $thumb;
} else { header('Status: 404 Not Found'); die; }
$pathUrl = _ROOT_FOLDER.'/thumbs/autothumb-'.$thumb.'-'.$filename;
if(!file_exists(_ROOT_FOLDER.$path.$filename)) { header('Status: 404 Not Found'); die; }
if(!file_exists($pathUrl) ){
$max = PhpThumbFactory::create(_ROOT_FOLDER.$path.$filename);
$max->adaptiveResize($maxWidth,$maxHeight)->save($pathUrl);
}
header('Content-type: image/jpeg');
readfile($pathUrl);
?>
答案 13 :(得分:-3)
我认为一个没有压力和处理工作的简单解决方案就是使用css:
1)申请一个可以为你提供裁剪图像的课程。在负余量的帮助下这样做。 我根本没有使用确切的保证金使用它。 2)在悬停时覆盖marging属性,以便它可以为您提供真实的图像。
css:
<style>
.crop:hover{
margin:0;
}
.crop {
margin:-100px -15px -40px -55px;
}
</style>
HTML:
<img class="crop" src="image.jpg" />
答案 14 :(得分:-5)
只需使用<img src='source' width="150" height="150" />
它会调整图像大小。
虽然它不会更好,因为它会给浏览器带来负担。