cncml手绘网

标题: PHP一般情况下生成的缩略图都比较不理想 [打印本页]

作者: admin    时间: 2018-7-7 23:52
标题: PHP一般情况下生成的缩略图都比较不理想
PHP用GD库生成高质量的缩略图片,PHP一般情况下生成的缩略图都比较不理想。今天试用PHP,GD库来生成缩略图。虽然并不100%完美。可是也应该可以满足缩略图的要求了。
  1. <?php 2 v# @8 |( g0 g0 @$ r
  2. $FILENAME="image.thumb"; # s; d2 m- t! y3 ?2 j& F
  3. // 生成图片的宽度
    / l  X' z  J: Y1 V5 g
  4. $RESIZEWIDTH=400; 8 Y+ f% F6 V3 s& _5 _
  5. // 生成图片的高度
    ' N2 l/ D1 s  l" r$ L3 Q% p
  6. $RESIZEHEIGHT=400;/ n. k3 S8 P5 z; v4 E- D. l8 i$ }
  7. 1 u: R% C7 o, g" x* A5 j
  8. function ResizeImage($im,$maxwidth,$maxheight,$name){
    + }) u* d) [/ ^( t$ @
  9. $width = imagesx($im);
    * y7 A$ t% d; f# R* _  n+ K
  10. $height = imagesy($im);
    8 U4 _9 ]% @! t7 C7 [: S
  11. if(($maxwidth && $width > $maxwidth) || ($maxheight && $height > $maxheight)){ ; \6 k' f+ r4 w, u
  12. if($maxwidth && $width > $maxwidth){ $ f  x/ W. k* |
  13. $widthratio = $maxwidth/$width; 5 Z( R6 K5 f7 E% z* o9 G/ U
  14. $RESIZEWIDTH=true; ; z  L+ b! W* m
  15. } 6 B% |( b$ C* @3 x5 ~- p$ \$ a8 I
  16. if($maxheight && $height > $maxheight){
    , B) Q0 d3 Y6 y; C
  17. $heightratio = $maxheight/$height; * h5 U. P5 N2 J# O
  18. $RESIZEHEIGHT=true; . A  }8 O; v/ _: B  T/ Q1 q3 H. x: B
  19. }
    : A0 t3 B: h% G! `
  20. if($RESIZEWIDTH && $RESIZEHEIGHT){
    3 h% o8 v: C  o& o' t
  21. if($widthratio < $heightratio){ # \/ o& x! g+ P+ F4 f
  22. $ratio = $widthratio;
    8 D* E  M$ d1 @* m8 a2 G6 p
  23. }else{ ( o, G8 K" N  x7 x" }
  24. $ratio = $heightratio; ) j8 D6 N) f  _4 K( G5 M
  25. }
    7 g0 Z8 z9 q* J5 e4 ]3 }# j
  26. }elseif($RESIZEWIDTH){
    8 k) _7 U: B: L, n
  27. $ratio = $widthratio; 4 g+ J  O5 e1 X! i
  28. }elseif($RESIZEHEIGHT){ ) y9 ?* i% m( P
  29. $ratio = $heightratio;
    ( ?2 v$ t( R6 L
  30. }
    : T6 x. |2 c( h- c3 X) G& @) r
  31. $newwidth = $width * $ratio; $ ~9 J7 A2 X& R# Y
  32. $newheight = $height * $ratio;
    . |5 |9 V4 G& }0 i# `
  33. if(function_exists("imagecopyresampled")){
    , ~/ R4 J2 d2 K. U; _
  34. $newim = imagecreatetruecolor($newwidth, $newheight);   O. ?6 W9 j( |0 `: p& r' F3 I
  35. imagecopyresampled($newim, $im, 0, 0, 0, 0, $newwidth, $newheight, $width, $height); : x5 \% S5 Q3 ^8 g& f7 q! I
  36. }else{ 0 z( ~- t/ k% O) V% t& G$ `/ t
  37. $newim = imagecreate($newwidth, $newheight); ; }2 Q+ g4 H5 h2 |* }
  38. imagecopyresized($newim, $im, 0, 0, 0, 0, $newwidth, $newheight, $width, $height); 2 k5 d% D3 c% Z5 d+ Y+ O' S
  39. } 1 |( ]8 u3 ~& V! Y9 o
  40. ImageJpeg ($newim,$name . ".jpg");
    4 K/ h) |0 L! l$ T$ y1 T$ g0 q
  41. ImageDestroy ($newim); " I2 a, I; F1 n+ C
  42. }else{ 4 q' x/ G: |9 E, z7 k- L
  43. ImageJpeg ($im,$name . ".jpg");
    & S# i5 L' Q  x2 a( t9 q
  44. } ' J7 `9 U( R7 g; h# P7 I* m- O
  45. }- Y1 X3 U5 N) W" C9 W, u4 |( Q

  46. ) u# Z1 t$ I9 j- Z( [1 E4 ]' c
  47. if($_FILES['image']['size']){
    : s! q5 K. l* W; D- p5 k
  48. if($_FILES['image']['type'] == "image/pjpeg"){
    # q7 T; r/ }8 {# d' W! X! ]
  49. $im = imagecreatefromjpeg($_FILES['image']['tmp_name']); 2 {- E7 e8 {4 i! F2 _
  50. }elseif($_FILES['image']['type'] == "image/x-png"){
    + v- M& P; n, B) d& Y1 Y; x: T
  51. $im = imagecreatefrompng($_FILES['image']['tmp_name']); ' g7 d5 C& l" Z+ ]9 R
  52. }elseif($_FILES['image']['type'] == "image/gif"){
    ; e' h+ b1 Q! j
  53. $im = imagecreatefromgif($_FILES['image']['tmp_name']);
    . {4 m- J3 d8 N. i2 h' x$ T
  54. } 2881064151
    , O. X& |5 Y* {8 |& _$ g6 e3 N
  55. if($im){ 8 q) N* O1 z6 r
  56. if(file_exists("$FILENAME.jpg")){
    6 Z1 h) f1 j, ?- x2 Q! F1 f. D
  57. unlink("$FILENAME.jpg");
    / K  b0 s. }7 T3 b0 P$ g
  58. } 8 d8 O2 ?: o" F( A) e/ I
  59. ResizeImage($im,$RESIZEWIDTH,$RESIZEHEIGHT,$FILENAME);
    8 O- u/ G  e2 q
  60. ImageDestroy ($im); 8 _$ D" y) v( ~: c
  61. }
    8 s# ?: Y/ q$ `! ~8 E" q: y
  62. }
    1 X  h/ n( G" j
  63. ?>
复制代码
以下是测试代码(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
  1. <?php
    % I9 ^" j4 d2 e# \  m5 K# n4 m
  2. include('ResizeImage.php'); & r1 _# p4 v1 j& t, n* R4 R9 r/ t
  3. if(!empty($_POST)){
    + ]: N+ A7 ]" w2 A" O' y
  4. echo($FILENAME.".jpg?cache=".rand(0,999999)); 5 w$ X4 t' [) k* G6 }6 d$ ?
  5. } 0 n+ r1 l% B( W- G1 n- W
  6. ?>
    - z1 r/ _8 T  I3 P
  7. <form name="test" action="?submit=true" enctype="multipart/form-data" method="post" >
    % u. U! E$ ]9 l8 N
  8. <input type="file" name="image" size="50" value="浏览"><p> 2 s! E4 ]; ^4 e, D
  9. <input type="submit" value="上传图片">
    4 q) f% Q$ f! i
  10. </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