cncml手绘网
标题:
PHP一般情况下生成的缩略图都比较不理想
[打印本页]
作者:
admin
时间:
2018-7-7 23:52
标题:
PHP一般情况下生成的缩略图都比较不理想
PHP用GD库生成高质量的缩略图片,PHP一般情况下生成的缩略图都比较不理想。今天试用PHP,GD库来生成缩略图。虽然并不100%完美。可是也应该可以满足缩略图的要求了。
<?php
4 ^) ?/ A1 \# O# R8 M) X4 q! w
$FILENAME="image.thumb";
r% _$ ^3 H5 H9 L9 d1 l
// 生成图片的宽度
3 d- t4 Q Z1 k5 I& l- G+ T8 A# e+ P" \
$RESIZEWIDTH=400;
; R' b6 C: k! V) W. w
// 生成图片的高度
1 [+ Z' _" o( W
$RESIZEHEIGHT=400;
% V! i& m7 d r* y
& X* n6 ~% i c& F' m+ V/ n1 _/ I
function ResizeImage($im,$maxwidth,$maxheight,$name){
1 j1 g* O) o8 t1 m( w& I
$width = imagesx($im);
. D# ?( g% ~$ y! x0 ?
$height = imagesy($im);
" k* g7 q# c- i( a0 s
if(($maxwidth && $width > $maxwidth) || ($maxheight && $height > $maxheight)){
; T8 R1 O( `$ Z* B4 s
if($maxwidth && $width > $maxwidth){
/ y8 z" Z3 Y. w; o
$widthratio = $maxwidth/$width;
( j) \/ ^% a! E& @3 ~
$RESIZEWIDTH=true;
# P4 v) L. M* ]
}
: l: j7 ]5 ]% S
if($maxheight && $height > $maxheight){
0 W8 _3 g% {; @7 b f+ Y5 T
$heightratio = $maxheight/$height;
2 K( `5 u! J) t! ], W/ ^
$RESIZEHEIGHT=true;
& _, E8 A5 n% w$ P
}
* S4 ]4 ^: }0 R1 [8 q2 m# x
if($RESIZEWIDTH && $RESIZEHEIGHT){
& J, N7 f# u' V/ y+ ^- u2 j
if($widthratio < $heightratio){
1 z0 [8 ?! C) V" H+ z
$ratio = $widthratio;
6 e( b) A$ r' l5 l- ~. a
}else{
" s$ L# D2 V. w
$ratio = $heightratio;
3 |( X( L, M" P, B) }' z3 _: M
}
4 ]2 h( U) W; T2 L
}elseif($RESIZEWIDTH){
( J3 t* ]0 k2 d; f0 R' `5 F
$ratio = $widthratio;
/ a! U8 p8 u/ V, Y7 n
}elseif($RESIZEHEIGHT){
; e: U, A" W- R9 c( P2 x7 E
$ratio = $heightratio;
- S3 q7 {0 u$ x4 @2 j$ n( x
}
P) y" A/ \) F- h) u/ | C& E9 T3 M
$newwidth = $width * $ratio;
1 E; M0 @+ R0 u+ D @2 Y
$newheight = $height * $ratio;
: S! g3 b. _. t& c: Q
if(function_exists("imagecopyresampled")){
( y7 U+ V, H$ W& }& P& {# i @
$newim = imagecreatetruecolor($newwidth, $newheight);
: V# B. Y- M: j0 m3 |
imagecopyresampled($newim, $im, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);
; Z3 m/ _) ]% [- O# B( Q1 Q$ ]
}else{
0 _) V+ J* {4 s2 K i @. A
$newim = imagecreate($newwidth, $newheight);
# D" {( c( p0 {: {
imagecopyresized($newim, $im, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);
: D* j+ c/ C8 a- u
}
; S9 Q. R( U, F5 J A2 r
ImageJpeg ($newim,$name . ".jpg");
; m% x7 N7 b9 {% \" E. ] S
ImageDestroy ($newim);
* T3 e% Z4 D, Z7 w+ `& l, q
}else{
& n3 h8 P6 K8 d) \3 r+ X* j
ImageJpeg ($im,$name . ".jpg");
/ p7 H% @& Q% G& Z# B# |
}
# F z, C& g* b- K: M1 R( j
}
4 _7 U8 U9 {' [" g- l
8 A7 I2 l$ L1 m+ X
if($_FILES['image']['size']){
9 k8 ]( b* U# S; l/ [) A
if($_FILES['image']['type'] == "image/pjpeg"){
) `$ }4 {* V/ w- s9 y( o- h1 \
$im = imagecreatefromjpeg($_FILES['image']['tmp_name']);
* u; C. x' Y+ z, k0 W
}elseif($_FILES['image']['type'] == "image/x-png"){
[/ X! Z: C4 U5 w3 L' s4 `
$im = imagecreatefrompng($_FILES['image']['tmp_name']);
6 S, x5 H: p. `8 U& m
}elseif($_FILES['image']['type'] == "image/gif"){
+ f: Y8 y9 ?/ |5 J& r/ R
$im = imagecreatefromgif($_FILES['image']['tmp_name']);
; ]7 U9 N4 T j. g* m, a' Z/ T
} 2881064151
/ z, j4 @9 w" @* V( K$ A
if($im){
# b% O: k( J! `
if(file_exists("$FILENAME.jpg")){
! ~& v' @. I% ^
unlink("$FILENAME.jpg");
( B) R# Z+ R/ i
}
9 z" l4 @# H: ]$ Q; A }- o% ~
ResizeImage($im,$RESIZEWIDTH,$RESIZEHEIGHT,$FILENAME);
& `3 f1 w4 |% a% A$ i3 i' f. P
ImageDestroy ($im);
5 F) w2 a' H, ]3 A4 w
}
0 Z$ P( ~9 J) H* i+ y; ~3 I& \7 n
}
8 S( w- A4 m, V/ C( y/ {8 R, {. k: P
?>
复制代码
以下是测试代码(demo.php)
5 ~& h1 k3 k/ u
7 L. M! C% y" }& `
代码如下:
U8 ]; d# [0 a
: v5 S, r5 U! d+ o
<?php
0 O$ u. f! ~9 U: H4 J
include('ResizeImage.php');
( Z; {. ^- R/ w- v
if(!empty($_POST)){
1 q; ?. `' D7 A2 J+ D4 g7 W6 S
echo($FILENAME.".jpg?cache=".rand(0,999999));
+ ]7 |1 P: q' b, L) c: x3 c9 e. ?
}
; f7 a/ }. F% g8 M0 b" U
?>
' J' c5 T. a* i) U9 P% Z
<form name="test" action="?submit=true" enctype="multipart/form-data" method="post" >
7 G/ B: E0 |( ?. Y _4 V6 s
<input type="file" name="image" size="50" value="浏览"><p>
3 J( U; V% O- }( [% F
<input type="submit" value="上传图片">
4 a% Y( T+ y0 Y! b: W8 r7 m# I/ Q
</form>
复制代码
: h! d" `) R: V8 p
: k7 c4 X7 i3 }" {+ y$ o7 x
欢迎光临 cncml手绘网 (http://www.cncml.com/)
Powered by Discuz! X3.2