上記は、data/attachment/ アドレスの先頭に存在しないファイルは image.php に転送されて処理され、URL がパラメータとして渡されることを意味します
$url = $_GET['url'];
$src = './data/attachment/' 。 preg_replace('/_(d+)_(d+)/', '', $url);
$filename = './data/attachment/' 。 $url;
if (file_exists($filename)) {
ob_start();
header('Content-type:image/jpeg');
readfile($filename);
ob_flush();
フラッシュ();
} その他 {
if(!preg_match('/_(d+)_(d+)/', $url, $wh)){
デフラット();
exit();
}
$width = $wh[1];
$height = $wh[2];
summ(realpath($src), $width, $height, $filename, 'crop', '85');
}
関数thumb($src, $width, $height, $filename, $mode = 'scale', $quality = '100') {
試してみてください{
$imageValue = getimagesize($src);
$sourceWidth = $imageValue[0]; //原图宽
$sourceHeight = $imageValue[1]; //原图高
$thumbWidth = $width; //缩略图宽
$thumbHeight = $height; //缩略图高
$_x = 0;
$_y = 0;
$w = $sourceWidth;
$h = $sourceHeight;
if ($mode == 'スケール') {
if ($sourceWidth
$_x = フロア(($thumbWidth - $sourceWidth) / 2);
$_y = フロア(($thumbHeight - $sourceHeight) / 2);
$thumbWidth = $sourceWidth;
$thumbHeight = $sourceHeight;
} その他 {
if ($thumbHeight * $sourceWidth > $thumbWidth * $sourceHeight) {
$thumbHeight = Floor($sourceHeight * $width / $sourceWidth);
$_y = フロア(($height - $thumbHeight) / 2);
} その他 {
$thumbWidth = Floor($sourceWidth * $height / $sourceHeight);
$_x = フロア(($width - $thumbWidth) / 2);
}
}
} else if ($mode == 'crop') {
if ($sourceHeight < $thumbHeight) { //如果原图寸小さい当前尺寸
$thumbWidth = Floor($thumbWidth * $sourceHeight / $thumbHeight);
$thumbHeight = $sourceHeight;
}
if ($sourceWidth
$thumbHeight = Floor($thumbHeight * $sourceWidth / $thumbWidth);
$thumbWidth = $sourceWidth;
}
$s1 = $sourceWidth / $sourceHeight; //原画比率
$s2 = $幅 / $高さ; //新しい画像の比率
if ($s1 == $s2) {
} else if ($s1 > $s2) { //全高
$y = 0;
$ax = フロア($sourceWidth * ($thumbHeight / $sourceHeight));
$x = ($ax - $thumbWidth) / 2;
$w = $thumbWidth / ($thumbHeight / $sourceHeight);
} else { //全宽度
$x = 0;
$ay = Floor($sourceHeight * ($thumbWidth / $sourceWidth)); //模拟原图比身長
$y = ($ay - $thumbHeight) / 2;
$h = $thumbHeight / ($thumbWidth / $sourceWidth);
}
}
スイッチ ($imageValue[2]) {
ケース 2: $source = imagecreatefromjpeg($src);
休憩;
ケース 1: $source = imagecreatefromgif($src);
休憩;
ケース 3: $source = imagecreatefrompng($src);
休憩;
ケース 6: $source = imagecreatefromwbmp($src);
休憩;
デフォルト: defulat();
戻ります;
}
header("コンテンツタイプ: image/jpeg");
$thumb = imagecreatetruecolor($width, $height);
imagefill($thumb, 0, 0, imagecolorallocate($thumb, 255, 255, 255));
imagecopyresampled($thumb, $source, 0, 0, $x, $y, $width, $height, $w, $h);
imagejpeg($thumb, null, $quality);
// if ($_SERVER['HTTP_REFERER'] || false !==tripos($_SERVER['HTTP_REFERER'], 'http://' . $_SERVER['SERVER_NAME'])) {
imagejpeg($thumb, $filename, $quality);
// }
imagedestroy($thumb);
imagedestroy($source);
} catch (例外 $ex) {
デフラット();
}
}
関数 defulat() {
$default_img = realpath('media/images/nopic.jpg');
ob_start();
header('Content-type:image/jpeg');
readfile($default_img);
ob_flush();
フラッシュ();
}
親指関数は、裁切方式を制御でき、スケールは等比放散、不裁切、不够の場所で白色充填、クロップは裁切、必要な場合は原図宽高比より大きい、那么は最大表示度を維持します、居中裁断上下多部分、要求宽高比が原図高比より小さい場合、那么は最大高を保持し、居中裁断左右多部分、总言之、変形を保持しない前提で、画像を小さくし、そして最大の画像を保持するこのコンテンツには、リライト機能と GD2 のサポートが必要です
http://www.bkjia.com/PHPjc/896772.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/896772.html技術記事 PHP の画像は、さまざまなサイズの表示に対応するために自動的に切り取られます。そのようなポータル サイトを作成したことがある場合は、画像がさまざまなサイズや比率で表示される可能性があることを知っているはずです。