cncml手绘网
标题:
PHP一般情况下生成的缩略图都比较不理想
[打印本页]
作者:
admin
时间:
2018-7-7 23:52
标题:
PHP一般情况下生成的缩略图都比较不理想
PHP用GD库生成高质量的缩略图片,PHP一般情况下生成的缩略图都比较不理想。今天试用PHP,GD库来生成缩略图。虽然并不100%完美。可是也应该可以满足缩略图的要求了。
<?php
- d& \6 }& B6 N2 Q
$FILENAME="image.thumb";
1 V, P; \7 Q5 w' m9 t' v
// 生成图片的宽度
9 }0 a q7 B: u, [: [& n$ b
$RESIZEWIDTH=400;
) E, c: c' |* }( f/ w
// 生成图片的高度
8 A& N: @& h% W7 q8 M
$RESIZEHEIGHT=400;
% A- K/ b Z9 T/ Z( t. n; E4 Y4 r
" o s" G( E# |+ E. @
function ResizeImage($im,$maxwidth,$maxheight,$name){
/ V# k2 k; s- T E" g0 s$ z4 e
$width = imagesx($im);
& u7 f8 o% O# d" u. t. ^
$height = imagesy($im);
+ M- x/ ?: }2 q: P
if(($maxwidth && $width > $maxwidth) || ($maxheight && $height > $maxheight)){
+ l7 R5 l# \* W5 V" M
if($maxwidth && $width > $maxwidth){
, i' s" D! b( K2 L- G$ c7 [5 P
$widthratio = $maxwidth/$width;
4 W" j! d, k7 c2 t0 ~/ i v, |
$RESIZEWIDTH=true;
# t- ]% U# `* ?# i5 z& s8 o0 ^
}
# Y- t( G: Z9 h' X3 {. m
if($maxheight && $height > $maxheight){
5 B% v4 b/ O& }* s3 I3 B; F
$heightratio = $maxheight/$height;
+ @/ j' |$ F! S }, ?
$RESIZEHEIGHT=true;
( [6 r+ Q2 ]% G: u+ X
}
" j" O6 t. Y6 B
if($RESIZEWIDTH && $RESIZEHEIGHT){
' _3 F6 m, }" B
if($widthratio < $heightratio){
& {7 W% y9 e1 q3 y! g2 y% ?
$ratio = $widthratio;
0 z( E& L9 \7 u k& B; }
}else{
! t; k+ u- {- b& C& V) k' ]
$ratio = $heightratio;
2 k& A: L7 r8 L( Q( w! l3 s
}
. |% X6 ^, ]4 [$ o
}elseif($RESIZEWIDTH){
6 A* S, W: W6 O
$ratio = $widthratio;
6 ^$ p. v* R" j6 u: S0 Z
}elseif($RESIZEHEIGHT){
7 n2 \! g0 C6 I! r% N" E! D
$ratio = $heightratio;
`! W( O3 k& _1 N/ e3 [
}
: v" l+ y8 ?) }
$newwidth = $width * $ratio;
& l2 W0 K0 X5 w
$newheight = $height * $ratio;
% @ i4 Y$ R1 F
if(function_exists("imagecopyresampled")){
: h# j( v; K+ A5 x# G
$newim = imagecreatetruecolor($newwidth, $newheight);
1 z P# |/ U# ~9 q
imagecopyresampled($newim, $im, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);
) n2 n2 p% X; v( l0 x; N I
}else{
) h# @- m: H! H7 S& ^9 o
$newim = imagecreate($newwidth, $newheight);
4 K* w: R& n9 T) g$ t6 i+ c. i! ?
imagecopyresized($newim, $im, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);
2 v6 h1 x: L" {) h/ a! B
}
, ]: G0 D% b' j/ S0 Q' X @
ImageJpeg ($newim,$name . ".jpg");
: c+ Q0 _! b9 V1 X6 u" S6 t
ImageDestroy ($newim);
; B Y1 R( R( l' w3 @
}else{
, a) u6 ^" G4 w% ^. k# V
ImageJpeg ($im,$name . ".jpg");
, y; q' c3 v0 j( U# ?2 a P) C6 O+ n& L, s
}
5 f& Z0 q! \8 T' @& H9 m8 s
}
; L7 H- \3 B0 I4 v- `- k, M5 A
' I% ?& X( h& p+ @
if($_FILES['image']['size']){
9 n7 t# ?5 `' X% k5 z6 f
if($_FILES['image']['type'] == "image/pjpeg"){
8 Y0 O/ a7 J8 E% A. O$ n
$im = imagecreatefromjpeg($_FILES['image']['tmp_name']);
9 O% t4 L& v3 q# t4 @$ \
}elseif($_FILES['image']['type'] == "image/x-png"){
% M. e9 [/ P! H( S/ _+ p" r. D4 v
$im = imagecreatefrompng($_FILES['image']['tmp_name']);
4 K' a$ t, m% B1 V) n! L0 _
}elseif($_FILES['image']['type'] == "image/gif"){
& E$ @* q: O, w$ Y. x' @0 e
$im = imagecreatefromgif($_FILES['image']['tmp_name']);
7 k1 I+ N: y$ ?: W9 U* L/ v
} 2881064151
2 S8 A! \1 E/ G8 W) d' R, J2 x
if($im){
# \7 B: A' Z/ T! c- e% @; r
if(file_exists("$FILENAME.jpg")){
" i4 O7 d& p* d( l4 n9 K5 u. ?
unlink("$FILENAME.jpg");
6 |; C- I! p; n; z
}
) Q k: H3 z: l& Y% E b5 B
ResizeImage($im,$RESIZEWIDTH,$RESIZEHEIGHT,$FILENAME);
' D. V/ e. h% ^
ImageDestroy ($im);
8 A5 A" j9 P, ~
}
1 C- j: @" l8 O5 Y1 b$ c) |0 u: k6 z
}
' R9 A9 q8 x# }% j0 `6 _
?>
复制代码
以下是测试代码(demo.php)
4 r$ i& j0 s$ B. I
! o* v* a e N. ~ J
代码如下:
; D8 K# f j9 T+ x. \& d, K! B, x
3 a$ S& Q0 L$ \
<?php
( z8 W* |" G9 d* H6 A6 R; o7 T
include('ResizeImage.php');
4 v5 b& M2 g) j; ?! [2 l2 i; [; U* K
if(!empty($_POST)){
& l1 A5 S( r m2 ]
echo($FILENAME.".jpg?cache=".rand(0,999999));
9 b! ~: n& F) Z! n; r
}
# c) L3 v H2 a. t/ n# L
?>
v" ^9 ^* R# X( d/ H$ A
<form name="test" action="?submit=true" enctype="multipart/form-data" method="post" >
) e$ R. |& `) ?( F u. T5 s
<input type="file" name="image" size="50" value="浏览"><p>
4 P3 e5 o9 K& G2 b7 I! O
<input type="submit" value="上传图片">
2 C. ^! `& r" m' E# v$ g
</form>
复制代码
: b" J: s) V: E8 r) Z( I4 A
/ ~* }* |* I! F( D" ?" f& L6 ^6 S2 g0 s
欢迎光临 cncml手绘网 (http://www.cncml.com/)
Powered by Discuz! X3.2