cncml手绘网
标题:
PHP一般情况下生成的缩略图都比较不理想
[打印本页]
作者:
admin
时间:
2018-7-7 23:52
标题:
PHP一般情况下生成的缩略图都比较不理想
PHP用GD库生成高质量的缩略图片,PHP一般情况下生成的缩略图都比较不理想。今天试用PHP,GD库来生成缩略图。虽然并不100%完美。可是也应该可以满足缩略图的要求了。
<?php
2 v# @8 |( g0 g0 @$ r
$FILENAME="image.thumb";
# s; d2 m- t! y3 ?2 j& F
// 生成图片的宽度
/ l X' z J: Y1 V5 g
$RESIZEWIDTH=400;
8 Y+ f% F6 V3 s& _5 _
// 生成图片的高度
' N2 l/ D1 s l" r$ L3 Q% p
$RESIZEHEIGHT=400;
/ n. k3 S8 P5 z; v4 E- D. l8 i$ }
1 u: R% C7 o, g" x* A5 j
function ResizeImage($im,$maxwidth,$maxheight,$name){
+ }) u* d) [/ ^( t$ @
$width = imagesx($im);
* y7 A$ t% d; f# R* _ n+ K
$height = imagesy($im);
8 U4 _9 ]% @! t7 C7 [: S
if(($maxwidth && $width > $maxwidth) || ($maxheight && $height > $maxheight)){
; \6 k' f+ r4 w, u
if($maxwidth && $width > $maxwidth){
$ f x/ W. k* |
$widthratio = $maxwidth/$width;
5 Z( R6 K5 f7 E% z* o9 G/ U
$RESIZEWIDTH=true;
; z L+ b! W* m
}
6 B% |( b$ C* @3 x5 ~- p$ \$ a8 I
if($maxheight && $height > $maxheight){
, B) Q0 d3 Y6 y; C
$heightratio = $maxheight/$height;
* h5 U. P5 N2 J# O
$RESIZEHEIGHT=true;
. A }8 O; v/ _: B T/ Q1 q3 H. x: B
}
: A0 t3 B: h% G! `
if($RESIZEWIDTH && $RESIZEHEIGHT){
3 h% o8 v: C o& o' t
if($widthratio < $heightratio){
# \/ o& x! g+ P+ F4 f
$ratio = $widthratio;
8 D* E M$ d1 @* m8 a2 G6 p
}else{
( o, G8 K" N x7 x" }
$ratio = $heightratio;
) j8 D6 N) f _4 K( G5 M
}
7 g0 Z8 z9 q* J5 e4 ]3 }# j
}elseif($RESIZEWIDTH){
8 k) _7 U: B: L, n
$ratio = $widthratio;
4 g+ J O5 e1 X! i
}elseif($RESIZEHEIGHT){
) y9 ?* i% m( P
$ratio = $heightratio;
( ?2 v$ t( R6 L
}
: T6 x. |2 c( h- c3 X) G& @) r
$newwidth = $width * $ratio;
$ ~9 J7 A2 X& R# Y
$newheight = $height * $ratio;
. |5 |9 V4 G& }0 i# `
if(function_exists("imagecopyresampled")){
, ~/ R4 J2 d2 K. U; _
$newim = imagecreatetruecolor($newwidth, $newheight);
O. ?6 W9 j( |0 `: p& r' F3 I
imagecopyresampled($newim, $im, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);
: x5 \% S5 Q3 ^8 g& f7 q! I
}else{
0 z( ~- t/ k% O) V% t& G$ `/ t
$newim = imagecreate($newwidth, $newheight);
; }2 Q+ g4 H5 h2 |* }
imagecopyresized($newim, $im, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);
2 k5 d% D3 c% Z5 d+ Y+ O' S
}
1 |( ]8 u3 ~& V! Y9 o
ImageJpeg ($newim,$name . ".jpg");
4 K/ h) |0 L! l$ T$ y1 T$ g0 q
ImageDestroy ($newim);
" I2 a, I; F1 n+ C
}else{
4 q' x/ G: |9 E, z7 k- L
ImageJpeg ($im,$name . ".jpg");
& S# i5 L' Q x2 a( t9 q
}
' J7 `9 U( R7 g; h# P7 I* m- O
}
- Y1 X3 U5 N) W" C9 W, u4 |( Q
) u# Z1 t$ I9 j- Z( [1 E4 ]' c
if($_FILES['image']['size']){
: s! q5 K. l* W; D- p5 k
if($_FILES['image']['type'] == "image/pjpeg"){
# q7 T; r/ }8 {# d' W! X! ]
$im = imagecreatefromjpeg($_FILES['image']['tmp_name']);
2 {- E7 e8 {4 i! F2 _
}elseif($_FILES['image']['type'] == "image/x-png"){
+ v- M& P; n, B) d& Y1 Y; x: T
$im = imagecreatefrompng($_FILES['image']['tmp_name']);
' g7 d5 C& l" Z+ ]9 R
}elseif($_FILES['image']['type'] == "image/gif"){
; e' h+ b1 Q! j
$im = imagecreatefromgif($_FILES['image']['tmp_name']);
. {4 m- J3 d8 N. i2 h' x$ T
} 2881064151
, O. X& |5 Y* {8 |& _$ g6 e3 N
if($im){
8 q) N* O1 z6 r
if(file_exists("$FILENAME.jpg")){
6 Z1 h) f1 j, ?- x2 Q! F1 f. D
unlink("$FILENAME.jpg");
/ K b0 s. }7 T3 b0 P$ g
}
8 d8 O2 ?: o" F( A) e/ I
ResizeImage($im,$RESIZEWIDTH,$RESIZEHEIGHT,$FILENAME);
8 O- u/ G e2 q
ImageDestroy ($im);
8 _$ D" y) v( ~: c
}
8 s# ?: Y/ q$ `! ~8 E" q: y
}
1 X h/ n( G" j
?>
复制代码
以下是测试代码(demo.php)
7 r, A7 q! F* C, V) B
! i, u7 H7 b1 t% Y
代码如下:
- N) U8 q) l4 |) @
2 G) t( Y4 n! k8 M1 A# t
<?php
% I9 ^" j4 d2 e# \ m5 K# n4 m
include('ResizeImage.php');
& r1 _# p4 v1 j& t, n* R4 R9 r/ t
if(!empty($_POST)){
+ ]: N+ A7 ]" w2 A" O' y
echo($FILENAME.".jpg?cache=".rand(0,999999));
5 w$ X4 t' [) k* G6 }6 d$ ?
}
0 n+ r1 l% B( W- G1 n- W
?>
- z1 r/ _8 T I3 P
<form name="test" action="?submit=true" enctype="multipart/form-data" method="post" >
% u. U! E$ ]9 l8 N
<input type="file" name="image" size="50" value="浏览"><p>
2 s! E4 ]; ^4 e, D
<input type="submit" value="上传图片">
4 q) f% Q$ f! i
</form>
复制代码
: @' O% r7 v# i u
% u3 p" W! O: i8 W% _9 i4 q
欢迎光临 cncml手绘网 (http://bbs.cncml.com/)
Powered by Discuz! X3.2