cncml手绘网
标题:
PHP一般情况下生成的缩略图都比较不理想
[打印本页]
作者:
admin
时间:
2018-7-7 23:52
标题:
PHP一般情况下生成的缩略图都比较不理想
PHP用GD库生成高质量的缩略图片,PHP一般情况下生成的缩略图都比较不理想。今天试用PHP,GD库来生成缩略图。虽然并不100%完美。可是也应该可以满足缩略图的要求了。
<?php
t' u( ^3 H! P
$FILENAME="image.thumb";
0 r0 |0 x; M/ ^
// 生成图片的宽度
! _$ x3 j4 g" \+ w& |
$RESIZEWIDTH=400;
4 {( X8 t3 J+ n+ A. m/ v
// 生成图片的高度
6 b; [4 G" c6 A3 O, U# `% l: I0 j
$RESIZEHEIGHT=400;
8 [( n: e4 Q! R- Z3 I( _$ d
% T6 w7 B7 q, m+ F5 u* t: s
function ResizeImage($im,$maxwidth,$maxheight,$name){
' v1 A! t; }& B: ]3 L/ O: U
$width = imagesx($im);
/ y/ t+ H, ^0 c( \. R
$height = imagesy($im);
/ A( X8 L9 i1 A, x2 D9 J, V
if(($maxwidth && $width > $maxwidth) || ($maxheight && $height > $maxheight)){
2 S; l! q4 L, ^& J
if($maxwidth && $width > $maxwidth){
% q5 U j) l7 Y5 ~
$widthratio = $maxwidth/$width;
. }" s& U7 ]( [ O) o
$RESIZEWIDTH=true;
8 Z/ [: `# F' z M
}
9 _2 I# _; m( W0 ~7 e' S
if($maxheight && $height > $maxheight){
" H# O! p$ V2 r# h! t2 b# g6 o
$heightratio = $maxheight/$height;
( W1 Y. y: W3 N$ L2 W I: F
$RESIZEHEIGHT=true;
3 l- R1 m/ h4 [3 t
}
& I; e7 ?% L' W) P8 w/ a
if($RESIZEWIDTH && $RESIZEHEIGHT){
; Y! }2 k( L9 G e' R
if($widthratio < $heightratio){
0 ?$ k9 X, A0 _& U" b4 M$ a" K9 y% G
$ratio = $widthratio;
# Z% d: t+ B4 b" d f
}else{
5 {4 \* n0 O) `7 |0 @5 u
$ratio = $heightratio;
; j+ Q$ q' B5 m/ W7 b
}
, J/ l5 x' `; O/ Z: D
}elseif($RESIZEWIDTH){
# Q* ~8 j) t0 g% E9 N, a
$ratio = $widthratio;
" ]6 \! }$ h7 e9 f6 e
}elseif($RESIZEHEIGHT){
: b0 x h7 u$ ^. R' b3 l
$ratio = $heightratio;
4 ?, s( D# j- c
}
; z% C G4 W W4 P
$newwidth = $width * $ratio;
6 o$ K, r6 i; }. z) G
$newheight = $height * $ratio;
3 `0 P2 t8 @1 N
if(function_exists("imagecopyresampled")){
: u5 ?( Z: L& t6 @/ H9 `
$newim = imagecreatetruecolor($newwidth, $newheight);
' B2 {0 B: Z6 u2 ]
imagecopyresampled($newim, $im, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);
7 n2 ^- e9 L6 o; b( ~, Z9 k
}else{
9 {1 @/ {0 n2 Q% `
$newim = imagecreate($newwidth, $newheight);
( u D% ` V! }# _/ E* }% Z
imagecopyresized($newim, $im, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);
d5 s) `! d; {$ A4 Y8 W* ^( w- f/ y
}
Y: ~) I2 l+ M
ImageJpeg ($newim,$name . ".jpg");
# h3 i& j; g) g$ W2 B
ImageDestroy ($newim);
# q, k4 ]8 W1 z8 l$ {
}else{
+ l' V6 g( U* `
ImageJpeg ($im,$name . ".jpg");
8 q% x2 ?7 Q, e) j& G
}
: a. r0 W( G3 _" O6 O
}
6 k& \( F$ x+ q7 G* l3 s5 v
; L4 ?8 I: P2 x& G3 d3 {9 p2 |5 M
if($_FILES['image']['size']){
) Q: K# ?+ l( l$ s6 j
if($_FILES['image']['type'] == "image/pjpeg"){
$ s f7 m2 U" v
$im = imagecreatefromjpeg($_FILES['image']['tmp_name']);
/ Q/ P8 G$ w! f2 y9 {
}elseif($_FILES['image']['type'] == "image/x-png"){
) j& I* f, G7 C; ~: i& h$ D3 E$ O
$im = imagecreatefrompng($_FILES['image']['tmp_name']);
$ K X2 A% n. c' f
}elseif($_FILES['image']['type'] == "image/gif"){
; X8 w/ U5 R/ v# o
$im = imagecreatefromgif($_FILES['image']['tmp_name']);
* j4 c( L/ X4 d: z2 k5 M
} 2881064151
+ S Y8 X* |2 @5 j+ y% r8 Z
if($im){
5 P7 Z2 e. e% g4 B& @
if(file_exists("$FILENAME.jpg")){
9 j6 y4 V; a# ^8 J5 u1 D
unlink("$FILENAME.jpg");
( q- Q3 ]3 c0 m9 Q S& [( d9 ]
}
2 l/ x5 d1 p4 A
ResizeImage($im,$RESIZEWIDTH,$RESIZEHEIGHT,$FILENAME);
( {* \) d5 W5 h
ImageDestroy ($im);
2 A2 P$ `& ?" E, @3 l; L/ J o
}
8 l. E+ [9 w5 W$ L2 V7 B/ N
}
( n5 t! w" N; M7 x3 u
?>
复制代码
以下是测试代码(demo.php)
1 |8 v0 [: x. `4 c2 D' V0 }( S
5 M6 `8 g! g: C6 i8 X! l4 H
代码如下:
( o, `- H* h! Y4 V$ T( K- G
+ b( Z7 r6 `3 M/ n/ U
<?php
$ c$ ~4 }- z( }" G/ ^* H
include('ResizeImage.php');
: p. i. Q7 G8 q& b* U N. ~2 x k7 d! C6 v
if(!empty($_POST)){
! f, j- ~& D# J
echo($FILENAME.".jpg?cache=".rand(0,999999));
. u& o d. p$ e: f7 C0 `! Y, }
}
+ G5 L4 m. M; S' e4 k7 {
?>
& X1 O6 N/ W$ ~+ T! e- m H
<form name="test" action="?submit=true" enctype="multipart/form-data" method="post" >
+ [7 j5 N# K1 Z% J: E0 N5 {
<input type="file" name="image" size="50" value="浏览"><p>
" c$ L3 p" l; f! U: [. I& V
<input type="submit" value="上传图片">
$ }. d/ k$ u) o' L- {" [& o
</form>
复制代码
& J' j& K c5 _6 y
( K: n/ m; s* e: O) \( m! U
欢迎光临 cncml手绘网 (http://www.cncml.com/)
Powered by Discuz! X3.2