TestGD.php 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155
  1. <?php declare(strict_types=1);
  2. use PHPUnit\Framework\TestCase;
  3. /**
  4. * Created by PhpStorm.
  5. * User: stanley-king
  6. * Date: 2017/6/9
  7. * Time: 下午5:25
  8. */
  9. define('BASE_ROOT_PATH',str_replace('/test','',dirname(__FILE__)));
  10. require_once(BASE_ROOT_PATH . '/global.php');
  11. require_once(BASE_CORE_PATH . '/lrlz.php');
  12. require_once(BASE_ROOT_PATH . '/fooder.php');
  13. require_once(BASE_HELPER_PATH . '/tools/image_scaler.php');
  14. require_once(BASE_HELPER_PATH . '/util_helper.php');
  15. class TestGD extends TestCase
  16. {
  17. public static function setUpBeforeClass() : void
  18. {
  19. Base::run_util();
  20. }
  21. public function testShare()
  22. {
  23. $this->create_shareimage(52620);
  24. }
  25. private function create_shareimage($uid)
  26. {
  27. $back_img = BASE_RESOURCE_PATH . '/mobile/member/images/share.jpg';
  28. $passwd = util::passwd;
  29. $name = md5("{$uid}.{$passwd}") . ".png";
  30. $mini_path = BASE_UPLOAD_PATH . DS . ATTACH_MINI_QRCODE . DS . $name;
  31. $name = "share-{$name}";
  32. $dest_img = BASE_UPLOAD_PATH . DS . ATTACH_MINI_QRCODE . DS . $name;
  33. $back = $this->create_image($back_img);
  34. $mini = $this->create_image($mini_path);
  35. $dest = imagecreatetruecolor(imagesx($back), imagesy($back));
  36. imagecopy($dest,$back, 0, 0, 0,0, imagesx($back), imagesy($back));
  37. imagecopyresized($dest,$mini, 30, 750, 0,0, 168,168,imagesx($mini), imagesy($mini));
  38. imagepng($dest, $dest_img);
  39. }
  40. public function testMerge()
  41. {
  42. $back_img = BASE_UPLOAD_PATH . '/tmp/back.jpg';
  43. $icon_img = BASE_UPLOAD_PATH . '/tmp/icon.png';
  44. $dest_img = BASE_UPLOAD_PATH . '/tmp/dest.jpg';
  45. $back = imagecreatefromjpeg($back_img);
  46. $icon = imagecreatefrompng($icon_img);
  47. imagecopy($back, $icon, 60, 60, 0, 0, imagesx($icon), imagesy($icon));
  48. imagejpeg($back, $dest_img,100);
  49. }
  50. public function testMini()
  51. {
  52. $inimg = BASE_UPLOAD_PATH . '/upfile/20161226123858-9318573b-66b0-ac37-26ce-91e3bee30a90.png';
  53. $output_file = BASE_UPLOAD_PATH . '/dest.png';
  54. $scaler = new tools\image_scaler(400,320);
  55. $x = $scaler->scale($inimg,1.25);
  56. if($x) {
  57. $image = $scaler->getImage();
  58. imagepng($image, $output_file,0);
  59. @chmod($output_file,0777);
  60. }
  61. }
  62. public function testNo()
  63. {
  64. $img = $this->create_image('/Users/stanley-king/Desktop/24535');
  65. }
  66. private function create_image($file)
  67. {
  68. $imagetype = exif_imagetype($file);
  69. if ($imagetype === false) {
  70. return false;
  71. }
  72. switch ($imagetype)
  73. {
  74. case IMAGETYPE_GIF:
  75. $image = @imagecreatefromgif($file);
  76. break;
  77. case IMAGETYPE_JPEG:
  78. case IMAGETYPE_JPEG2000:
  79. $image = @imagecreatefromjpeg($file);
  80. break;
  81. case IMAGETYPE_PNG:
  82. $image = @imagecreatefrompng($file);
  83. break;
  84. case IMAGETYPE_BMP:
  85. $image = @imagecreatefrombmp($file);
  86. break;
  87. default:
  88. return false;
  89. }
  90. return $image;
  91. }
  92. private function scanDir($dir)
  93. {
  94. if(is_dir($dir))
  95. {
  96. $files_path = [];
  97. $files_name = [];
  98. $items = scandir($dir);
  99. foreach ($items as $item)
  100. {
  101. if($item == '.' || $item == '..') continue;//取出系统目录
  102. $name = $item;
  103. $path = $dir.$item;
  104. if(is_file($path)) {
  105. $files_path[] = $path;
  106. $files_name[] = $name;
  107. }
  108. }
  109. }
  110. return ["files_path"=>$files_path,"files_name"=>$files_name];
  111. }
  112. public function testGetCarPicture()
  113. {
  114. $dir = BASE_ROOT_PATH."/data/upload/uploadtmp/";//图片库 或 车型图片库
  115. $files = $this->scanDir($dir); //读取文件路径
  116. foreach ($files['files_name'] as $file_name){
  117. if($file_name == '1') {
  118. //头图 约定名称
  119. }
  120. elseif($file_name == '2')
  121. {
  122. //车型亮点 约定名称
  123. }
  124. else
  125. {
  126. //其他依次
  127. }
  128. }
  129. //可能需要转换成自己的url
  130. return ["head"=>"","hot"=>"","other"=>""];
  131. }
  132. }