ImageUrlBuilderTest.php 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263
  1. <?php
  2. namespace Qiniu\Tests;
  3. use PHPUnit\Framework\TestCase;
  4. /**
  5. * imageprocess test
  6. *
  7. * @package Qiniu
  8. * @subpackage test
  9. * @author Sherlock Ren <sherlock_ren@icloud.com>
  10. */
  11. class ImageUrlBuilderTest extends TestCase
  12. {
  13. /**
  14. * 缩略图测试
  15. *
  16. * @test
  17. * @return void
  18. * @author Sherlock Ren <sherlock_ren@icloud.com>
  19. */
  20. public function testThumbutl()
  21. {
  22. $imageUrlBuilder = new \Qiniu\Processing\ImageUrlBuilder();
  23. $url = 'http://78re52.com1.z0.glb.clouddn.com/resource/gogopher.jpg';
  24. $url2 = $url . '?watermark/1/gravity/SouthEast/dx/0/dy/0/image/'
  25. . 'aHR0cDovL2Fkcy1jZG4uY2h1Y2h1amllLmNvbS9Ga1R6bnpIY2RLdmRBUFc5cHZZZ3pTc21UY0tB';
  26. // 异常测试
  27. $this->assertEquals($url, $imageUrlBuilder->thumbnail($url, 1, 0, 0));
  28. $this->assertEquals($url, \Qiniu\thumbnail($url, 1, 0, 0));
  29. // 简单缩略测试
  30. $this->assertEquals(
  31. $url . '?imageView2/1/w/200/h/200/ignore-error/1/',
  32. $imageUrlBuilder->thumbnail($url, 1, 200, 200)
  33. );
  34. $this->assertEquals(
  35. $url . '?imageView2/1/w/200/h/200/ignore-error/1/',
  36. \Qiniu\thumbnail($url, 1, 200, 200)
  37. );
  38. // 输出格式测试
  39. $this->assertEquals(
  40. $url . '?imageView2/1/w/200/h/200/format/png/ignore-error/1/',
  41. $imageUrlBuilder->thumbnail($url, 1, 200, 200, 'png')
  42. );
  43. $this->assertEquals(
  44. $url . '?imageView2/1/w/200/h/200/format/png/ignore-error/1/',
  45. \Qiniu\thumbnail($url, 1, 200, 200, 'png')
  46. );
  47. // 渐进显示测试
  48. $this->assertEquals(
  49. $url . '?imageView2/1/w/200/h/200/format/png/interlace/1/ignore-error/1/',
  50. $imageUrlBuilder->thumbnail($url, 1, 200, 200, 'png', 1)
  51. );
  52. $this->assertEquals(
  53. $url . '?imageView2/1/w/200/h/200/format/png/ignore-error/1/',
  54. \Qiniu\thumbnail($url, 1, 200, 200, 'png', 2)
  55. );
  56. // 图片质量测试
  57. $this->assertEquals(
  58. $url . '?imageView2/1/w/200/h/200/format/png/interlace/1/q/80/ignore-error/1/',
  59. $imageUrlBuilder->thumbnail($url, 1, 200, 200, 'png', 1, 80)
  60. );
  61. $this->assertEquals(
  62. $url . '?imageView2/1/w/200/h/200/format/png/interlace/1/ignore-error/1/',
  63. \Qiniu\thumbnail($url, 1, 200, 200, 'png', 1, 101)
  64. );
  65. // 多参数测试
  66. $this->assertEquals(
  67. $url2 . '|imageView2/1/w/200/h/200/ignore-error/1/',
  68. $imageUrlBuilder->thumbnail($url2, 1, 200, 200)
  69. );
  70. $this->assertEquals(
  71. $url2 . '|imageView2/1/w/200/h/200/ignore-error/1/',
  72. \Qiniu\thumbnail($url2, 1, 200, 200)
  73. );
  74. }
  75. /**
  76. * 图片水印测试
  77. *
  78. * @test
  79. * @param void
  80. * @return void
  81. * @author Sherlock Ren <sherlock_ren@icloud.com>
  82. */
  83. public function waterImgTest()
  84. {
  85. $imageUrlBuilder = new \Qiniu\Processing\ImageUrlBuilder();
  86. $url = 'http://78re52.com1.z0.glb.clouddn.com/resource/gogopher.jpg';
  87. $url2 = $url . '?imageView2/1/w/200/h/200/format/png/ignore-error/1/';
  88. $image = 'http://developer.qiniu.com/resource/logo-2.jpg';
  89. // 水印简单测试
  90. $this->assertEquals(
  91. $url . '?watermark/1/image/aHR0cDovL2RldmVsb3Blci5xaW5pdS5jb20vcmVzb3VyY2UvbG9nby0yLmpwZw=='
  92. . '/dissolve/100/gravity/SouthEast/',
  93. $imageUrlBuilder->waterImg($url, $image)
  94. );
  95. $this->assertEquals(
  96. $url . '?watermark/1/image/aHR0cDovL2RldmVsb3Blci5xaW5pdS5jb20vcmVzb3VyY2UvbG9nby0yLmpwZw=='
  97. . '/gravity/SouthEast/',
  98. $imageUrlBuilder->waterImg($url, $image, 101)
  99. );
  100. $this->assertEquals(
  101. $url . '?watermark/1/image/aHR0cDovL2RldmVsb3Blci5xaW5pdS5jb20vcmVzb3VyY2UvbG9nby0yLmpwZw==/',
  102. $imageUrlBuilder->waterImg($url, $image, 101, 'sdfsd')
  103. );
  104. $this->assertEquals(
  105. $url . '?watermark/1/image/aHR0cDovL2RldmVsb3Blci5xaW5pdS5jb20vcmVzb3VyY2UvbG9nby0yLmpwZw=='
  106. . '/dissolve/100/gravity/SouthEast/',
  107. \Qiniu\waterImg($url, $image)
  108. );
  109. // 横轴边距测试
  110. $this->assertEquals(
  111. $url . '?watermark/1/image/aHR0cDovL2RldmVsb3Blci5xaW5pdS5jb20vcmVzb3VyY2UvbG9nby0yLmpwZw=='
  112. . '/dissolve/100/gravity/SouthEast/dx/10/',
  113. $imageUrlBuilder->waterImg($url, $image, 100, 'SouthEast', 10)
  114. );
  115. $this->assertEquals(
  116. $url . '?watermark/1/image/aHR0cDovL2RldmVsb3Blci5xaW5pdS5jb20vcmVzb3VyY2UvbG9nby0yLmpwZw=='
  117. . '/dissolve/100/gravity/SouthEast/',
  118. \Qiniu\waterImg($url, $image, 100, 'SouthEast', 'sad')
  119. );
  120. // 纵轴边距测试
  121. $this->assertEquals(
  122. $url . '?watermark/1/image/aHR0cDovL2RldmVsb3Blci5xaW5pdS5jb20vcmVzb3VyY2UvbG9nby0yLmpwZw=='
  123. . '/dissolve/100/gravity/SouthEast/dx/10/dy/10/',
  124. $imageUrlBuilder->waterImg($url, $image, 100, 'SouthEast', 10, 10)
  125. );
  126. $this->assertEquals(
  127. $url . '?watermark/1/image/aHR0cDovL2RldmVsb3Blci5xaW5pdS5jb20vcmVzb3VyY2UvbG9nby0yLmpwZw=='
  128. . '/dissolve/100/gravity/SouthEast/',
  129. \Qiniu\waterImg($url, $image, 100, 'SouthEast', 'sad', 'asdf')
  130. );
  131. // 自适应原图的短边比例测试
  132. $this->assertEquals(
  133. $url . '?watermark/1/image/aHR0cDovL2RldmVsb3Blci5xaW5pdS5jb20vcmVzb3VyY2UvbG9nby0yLmpwZw=='
  134. . '/dissolve/100/gravity/SouthEast/dx/10/dy/10/ws/0.5/',
  135. $imageUrlBuilder->waterImg($url, $image, 100, 'SouthEast', 10, 10, 0.5)
  136. );
  137. $this->assertEquals(
  138. $url . '?watermark/1/image/aHR0cDovL2RldmVsb3Blci5xaW5pdS5jb20vcmVzb3VyY2UvbG9nby0yLmpwZw=='
  139. . '/dissolve/100/gravity/SouthEast/',
  140. \Qiniu\waterImg($url, $image, 100, 'SouthEast', 'sad', 'asdf', 2)
  141. );
  142. // 多参数测试
  143. $this->assertEquals(
  144. $url2 . '|watermark/1/image/aHR0cDovL2RldmVsb3Blci5xaW5pdS5jb20vcmVzb3VyY2UvbG9nby0yLmpwZw=='
  145. . '/dissolve/100/gravity/SouthEast/',
  146. $imageUrlBuilder->waterImg($url2, $image)
  147. );
  148. $this->assertEquals(
  149. $url2 . '|watermark/1/image/aHR0cDovL2RldmVsb3Blci5xaW5pdS5jb20vcmVzb3VyY2UvbG9nby0yLmpwZw=='
  150. . '/dissolve/100/gravity/SouthEast/',
  151. \Qiniu\waterImg($url2, $image)
  152. );
  153. }
  154. /**
  155. * 文字水印测试
  156. *
  157. * @test
  158. * @param void
  159. * @return void
  160. * @author Sherlock Ren <sherlock_ren@icloud.com>
  161. */
  162. public function waterTextTest()
  163. {
  164. $imageUrlBuilder = new \Qiniu\Processing\ImageUrlBuilder();
  165. $url = 'http://78re52.com1.z0.glb.clouddn.com/resource/gogopher.jpg';
  166. $url2 = $url . '?imageView2/1/w/200/h/200/format/png/ignore-error/1/';
  167. $text = '测试一下';
  168. $font = '微软雅黑';
  169. $fontColor = '#FF0000';
  170. // 水印简单测试
  171. $this->assertEquals($url . '?watermark/2/text/5rWL6K-V5LiA5LiL/font/5b6u6L2v6ZuF6buR/'
  172. . 'fontsize/500/dissolve/100/gravity/SouthEast/', $imageUrlBuilder->waterText($url, $text, $font, 500));
  173. $this->assertEquals(
  174. $url . '?watermark/2/text/5rWL6K-V5LiA5LiL/font/5b6u6L2v6ZuF6buR/'
  175. . 'dissolve/100/gravity/SouthEast/',
  176. \Qiniu\waterText($url, $text, $font, 'sdf')
  177. );
  178. // 字体颜色测试
  179. $this->assertEquals(
  180. $url . '?watermark/2/text/5rWL6K-V5LiA5LiL/font/5b6u6L2v6ZuF6buR/fontsize/500/fill/'
  181. . 'I0ZGMDAwMA==/dissolve/100/gravity/SouthEast/',
  182. $imageUrlBuilder->waterText($url, $text, $font, 500, $fontColor)
  183. );
  184. $this->assertEquals(
  185. $url . '?watermark/2/text/5rWL6K-V5LiA5LiL/font/5b6u6L2v6ZuF6buR/fill/I0ZGMDAwMA=='
  186. . '/dissolve/100/gravity/SouthEast/',
  187. \Qiniu\waterText($url, $text, $font, 'sdf', $fontColor)
  188. );
  189. // 透明度测试
  190. $this->assertEquals(
  191. $url . '?watermark/2/text/5rWL6K-V5LiA5LiL/font/5b6u6L2v6ZuF6buR/fontsize/500/fill/I0ZGMDAwMA=='
  192. . '/dissolve/80/gravity/SouthEast/',
  193. $imageUrlBuilder->waterText($url, $text, $font, 500, $fontColor, 80)
  194. );
  195. $this->assertEquals(
  196. $url . '?watermark/2/text/5rWL6K-V5LiA5LiL/font/5b6u6L2v6ZuF6buR/fill/I0ZGMDAwMA=='
  197. . '/gravity/SouthEast/',
  198. \Qiniu\waterText($url, $text, $font, 'sdf', $fontColor, 101)
  199. );
  200. // 水印位置测试
  201. $this->assertEquals(
  202. $url . '?watermark/2/text/5rWL6K-V5LiA5LiL/font/5b6u6L2v6ZuF6buR/fontsize/500/fill/I0ZGMDAwMA=='
  203. . '/dissolve/80/gravity/East/',
  204. $imageUrlBuilder->waterText($url, $text, $font, 500, $fontColor, 80, 'East')
  205. );
  206. $this->assertEquals(
  207. $url . '?watermark/2/text/5rWL6K-V5LiA5LiL/font/5b6u6L2v6ZuF6buR/fill/I0ZGMDAwMA==/',
  208. \Qiniu\waterText($url, $text, $font, 'sdf', $fontColor, 101, 'sdfsdf')
  209. );
  210. // 横轴距离测试
  211. $this->assertEquals(
  212. $url . '?watermark/2/text/5rWL6K-V5LiA5LiL/font/5b6u6L2v6ZuF6buR/fontsize/500/fill/I0ZGMDAwMA=='
  213. . '/dissolve/80/gravity/East/dx/10/',
  214. $imageUrlBuilder->waterText($url, $text, $font, 500, $fontColor, 80, 'East', 10)
  215. );
  216. $this->assertEquals(
  217. $url . '?watermark/2/text/5rWL6K-V5LiA5LiL/font/5b6u6L2v6ZuF6buR/fill/I0ZGMDAwMA==/',
  218. \Qiniu\waterText($url, $text, $font, 'sdf', $fontColor, 101, 'sdfsdf', 'sdfs')
  219. );
  220. // 纵轴距离测试
  221. $this->assertEquals(
  222. $url . '?watermark/2/text/5rWL6K-V5LiA5LiL/font/5b6u6L2v6ZuF6buR/fontsize/500/fill/I0ZGMDAwMA=='
  223. . '/dissolve/80/gravity/East/dx/10/dy/10/',
  224. $imageUrlBuilder->waterText($url, $text, $font, 500, $fontColor, 80, 'East', 10, 10)
  225. );
  226. $this->assertEquals(
  227. $url . '?watermark/2/text/5rWL6K-V5LiA5LiL/font/5b6u6L2v6ZuF6buR/fill/I0ZGMDAwMA==/',
  228. \Qiniu\waterText($url, $text, $font, 'sdf', $fontColor, 101, 'sdfsdf', 'sdfs', 'ssdf')
  229. );
  230. // 多参数测试
  231. $this->assertEquals(
  232. $url2 . '|watermark/2/text/5rWL6K-V5LiA5LiL/font/5b6u6L2v6ZuF6buR/'
  233. . 'fontsize/500/dissolve/100/gravity/SouthEast/',
  234. $imageUrlBuilder->waterText($url2, $text, $font, 500)
  235. );
  236. $this->assertEquals(
  237. $url2 . '|watermark/2/text/5rWL6K-V5LiA5LiL/font/5b6u6L2v6ZuF6buR/'
  238. . 'fontsize/500/dissolve/100/gravity/SouthEast/',
  239. \Qiniu\waterText($url2, $text, $font, 500)
  240. );
  241. }
  242. }