148 lines
		
	
	
		
			4.9 KiB
		
	
	
	
		
			PHP
		
	
	
		
		
			
		
	
	
			148 lines
		
	
	
		
			4.9 KiB
		
	
	
	
		
			PHP
		
	
	
|  | <?php | ||
|  | 
 | ||
|  | namespace OSS\Tests; | ||
|  | 
 | ||
|  | require_once __DIR__ . '/Common.php'; | ||
|  | 
 | ||
|  | use OSS\OssClient; | ||
|  | 
 | ||
|  | class OssClinetImageTest extends TestOssClientBase | ||
|  | { | ||
|  |     private $bucketName; | ||
|  |     private $client; | ||
|  |     private $local_file; | ||
|  |     private $object; | ||
|  |     private $download_file; | ||
|  | 
 | ||
|  |     protected function setUp(): void | ||
|  |     { | ||
|  |         parent::setUp(); | ||
|  | 
 | ||
|  |         $this->client = $this->ossClient; | ||
|  |         $this->bucketName = $this->bucket; | ||
|  |         $this->local_file = "example.jpg"; | ||
|  |         $this->object = "oss-example.jpg"; | ||
|  |         $this->download_file = "image.jpg"; | ||
|  | 
 | ||
|  |         Common::waitMetaSync(); | ||
|  |         $this->client->uploadFile($this->bucketName, $this->object, $this->local_file); | ||
|  |     } | ||
|  | 
 | ||
|  |     protected function tearDown(): void | ||
|  |     { | ||
|  |         parent::tearDown(); | ||
|  |         unlink($this->download_file); | ||
|  |     } | ||
|  |      | ||
|  |     public function testImageResize() | ||
|  |     { | ||
|  |         $options = array( | ||
|  |             OssClient::OSS_FILE_DOWNLOAD => $this->download_file, | ||
|  |             OssClient::OSS_PROCESS => "image/resize,m_fixed,h_100,w_100", ); | ||
|  |         $this->check($options, 100, 100, 3267, 'jpg'); | ||
|  |     } | ||
|  |      | ||
|  |     public function testImageCrop() | ||
|  |     { | ||
|  |         $options = array( | ||
|  |             OssClient::OSS_FILE_DOWNLOAD => $this->download_file, | ||
|  |             OssClient::OSS_PROCESS => "image/crop,w_100,h_100,x_100,y_100,r_1", ); | ||
|  |         $this->check($options, 100, 100, 1969, 'jpg'); | ||
|  |     } | ||
|  | 
 | ||
|  |     public function testImageRotate() | ||
|  |     { | ||
|  |         $options = array( | ||
|  |             OssClient::OSS_FILE_DOWNLOAD => $this->download_file, | ||
|  |             OssClient::OSS_PROCESS => "image/rotate,90", ); | ||
|  |         $this->check($options, 267, 400, 20998, 'jpg'); | ||
|  |     } | ||
|  | 
 | ||
|  |     public function testImageSharpen() | ||
|  |     { | ||
|  |         $options = array( | ||
|  |             OssClient::OSS_FILE_DOWNLOAD => $this->download_file, | ||
|  |             OssClient::OSS_PROCESS => "image/sharpen,100", ); | ||
|  |         $this->check($options, 400, 267, 23015, 'jpg'); | ||
|  |     } | ||
|  | 
 | ||
|  |     public function testImageWatermark() | ||
|  |     { | ||
|  |         $options = array( | ||
|  |             OssClient::OSS_FILE_DOWNLOAD => $this->download_file, | ||
|  |             OssClient::OSS_PROCESS => "image/watermark,text_SGVsbG8g5Zu-54mH5pyN5YqhIQ", ); | ||
|  |         $this->check($options, 400, 267, 26369, 'jpg'); | ||
|  |     } | ||
|  | 
 | ||
|  |     public function testImageFormat() | ||
|  |     { | ||
|  |         $options = array( | ||
|  |             OssClient::OSS_FILE_DOWNLOAD => $this->download_file, | ||
|  |             OssClient::OSS_PROCESS => "image/format,png", ); | ||
|  |         $this->check($options, 400, 267, 160733, 'png'); | ||
|  |     } | ||
|  | 
 | ||
|  |     public function testImageTofile() | ||
|  |     { | ||
|  |         $options = array( | ||
|  |             OssClient::OSS_FILE_DOWNLOAD => $this->download_file, | ||
|  |             OssClient::OSS_PROCESS => "image/resize,m_fixed,w_100,h_100", ); | ||
|  |         $this->check($options, 100, 100, 3267, 'jpg'); | ||
|  |     } | ||
|  | 
 | ||
|  |     public function testProcesObject() | ||
|  |     { | ||
|  |         $object = 'process-object.jpg'; | ||
|  |         $process = 'image/resize,m_fixed,w_100,h_100'. | ||
|  |                    '|sys/saveas'. | ||
|  |                    ',o_'.$this->base64url_encode($object). | ||
|  |                    ',b_'.$this->base64url_encode($this->bucketName); | ||
|  |         $result = $this->client->processObject($this->bucketName, $this->object, $process); | ||
|  |         $this->assertTrue(stripos($result, '"object": "process-object.jpg",') > 0); | ||
|  |         $this->assertTrue(stripos($result, '"status": "OK"') > 0); | ||
|  | 
 | ||
|  |          | ||
|  |         $options = array( | ||
|  |             OssClient::OSS_FILE_DOWNLOAD => $this->download_file, | ||
|  |         ); | ||
|  |         $this->client->getObject($this->bucketName, $object, $options); | ||
|  |         $array = getimagesize($this->download_file); | ||
|  |         $this->assertEquals(100, $array[0]); | ||
|  |         $this->assertEquals(100, $array[1]); | ||
|  |         $this->assertEquals(2, $array[2]); | ||
|  | 
 | ||
|  |         //without bucket
 | ||
|  |         $object = 'process-object-1.jpg'; | ||
|  |         $process = 'image/watermark,text_SGVsbG8g5Zu-54mH5pyN5YqhIQ'. | ||
|  |                    '|sys/saveas'. | ||
|  |                    ',o_'.$this->base64url_encode($object); | ||
|  |         $result = $this->client->processObject($this->bucketName, $this->object, $process); | ||
|  |         $this->assertTrue(stripos($result, '"object": "process-object-1.jpg",') > 0); | ||
|  |         $this->assertTrue(stripos($result, '"status": "OK"') > 0); | ||
|  | 
 | ||
|  |          | ||
|  |         $options = array( | ||
|  |             OssClient::OSS_FILE_DOWNLOAD => $this->download_file, | ||
|  |         ); | ||
|  |         $this->client->getObject($this->bucketName, $object, $options); | ||
|  |         $array = getimagesize($this->download_file); | ||
|  |         $this->assertEquals(400, $array[0]); | ||
|  |         $this->assertEquals(267, $array[1]); | ||
|  |         $this->assertEquals(2, $array[2]); | ||
|  |     } | ||
|  | 
 | ||
|  |     private function check($options, $width, $height, $size, $type) | ||
|  |     { | ||
|  |         $this->client->getObject($this->bucketName, $this->object, $options); | ||
|  |         $array = getimagesize($this->download_file); | ||
|  |         $this->assertEquals($width, $array[0]); | ||
|  |         $this->assertEquals($height, $array[1]); | ||
|  |         $this->assertEquals($type === 'jpg' ? 2 : 3, $array[2]);//2 <=> jpg
 | ||
|  |     } | ||
|  | 
 | ||
|  |     private function base64url_encode($data) | ||
|  |     { | ||
|  |         return rtrim(strtr(base64_encode($data), '+/', '-_'), '=');  | ||
|  |     } | ||
|  | } |