iOS - UIImagePickerController


前言

	NS_CLASS_AVAILABLE_IOS(2_0) @interface UIImagePickerController : UINavigationController <NSCoding>
	@available(iOS 2.0, *)    public class UIImagePickerController : UINavigationController, NSCoding
  • iOS 獲取圖片有三種方法:

    • 直接調用攝像頭拍照;
    • 從相冊中選擇;
    • 從圖庫中選擇。
  • UIImagePickerController 是系統提供的用來獲取圖片和視頻的接口。用 UIImagePickerController 類來獲取圖片視頻,大體分為以下幾個步驟:

    • 初始化 UIImagePickerController 類;
    • 設置 UIImagePickerController 實例的數據來源類型;
    • 設置代理;
    • 如果需要做圖片修改的話設置 allowsEditing = YES。

1、imagePickerController 的創建

  • Objective-C

    • 需遵守協議 UIImagePickerControllerDelegate, UINavigationControllerDelegate

      	// 實例化 UIImagePickerController 對象
      
      		UIImagePickerController *imagePickerController = [[UIImagePickerController alloc] init];
      
      		// 設置代理
      		imagePickerController.delegate = self;
      
      		// 設置是否需要做圖片編輯,default NO
      		imagePickerController.allowsEditing = YES;
      
      		// 判斷數據來源是否可用
      		if([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypePhotoLibrary]) {
          	
              	// 設置數據來源
              	imagePickerController.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
      
              	// 打開相機/相冊/圖庫
              	[self presentViewController:imagePickerController animated:YES completion:nil];
          	}
      
      	// UIImagePickerControllerDelegate 協議方法
      
      		// 取消選擇
      		- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker {
          
          		// 退出當前界面
          		[picker dismissViewControllerAnimated:YES completion:nil];
      		}
      
      		// 選擇完成
      		- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
          
          		UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 20, self.view.frame.size.width, 
          		                                                                              self.view.frame.size.height - 20)];
          		[self.view addSubview:imageView];
          
          		// 獲取點擊的圖片
          		imageView.image = [info objectForKey:UIImagePickerControllerOriginalImage];
          
          		[picker dismissViewControllerAnimated:YES completion:nil];
      		}
      
  • Swift

    • 需遵守協議 UIImagePickerControllerDelegate, UINavigationControllerDelegate

      	// 實例化 UIImagePickerController 對象
      
      		let imagePickerController = UIImagePickerController()
      		
      		// 設置代理
      		imagePickerController.delegate = self
      
      		// 設置是否需要做圖片編輯,default NO.
      		imagePickerController.allowsEditing = true
      
      		// 判斷數據來源是否可用
      		if UIImagePickerController.isSourceTypeAvailable(UIImagePickerControllerSourceType.PhotoLibrary) {
      		
          		// 設置數據來源
          		imagePickerController.sourceType = UIImagePickerControllerSourceType.PhotoLibrary
      
          		// 打開相機/相冊/圖庫
              	self.presentViewController(imagePickerController, animated: true, completion: nil)
      		}
      
      	// UIImagePickerControllerDelegate 協議方法
      
      		// 取消選擇
      		func imagePickerControllerDidCancel(picker: UIImagePickerController) {
      
      			// 退出當前界面
          		picker.dismissViewControllerAnimated(true, completion: nil)                                                     		
      		}
      
      		// 選擇完成
      		func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject]) {
      
          		let imageView = UIImageView(frame: CGRectMake(0, 20, self.view.frame.size.width, self.view.frame.size.height - 20))
          		self.view.addSubview(imageView)
      
      			// 獲取點擊的圖片
          		imageView.image = info[UIImagePickerControllerOriginalImage] as? UIImage
      
      			picker.dismissViewControllerAnimated(true, completion: nil)
      		}
      

2、imagePickerController 的設置

  • Objective-C

    	// 設置代理,需遵守 UIImagePickerControllerDelegate, UINavigationControllerDelegate 協議
     	imagePickerController.delegate = self;
        
    	// 設置是否需要做圖片編輯
    	imagePickerController.allowsEditing = YES;
        
      	// 判斷設備數據來源是否支持
      	/*
      	  	UIImagePickerControllerSourceTypePhotoLibrary,      // 來自圖庫
      	  	UIImagePickerControllerSourceTypeCamera,            // 來自相機
      	  	UIImagePickerControllerSourceTypeSavedPhotosAlbum   // 來自相冊
      	*/
      	if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypePhotoLibrary]) {
                	
      	}
        
      	// 判斷攝像頭是否支持
      	/*
      	  	UIImagePickerControllerCameraDeviceRear,     // 后置攝像頭
      	  	UIImagePickerControllerCameraDeviceFront     // 前置攝像頭
      	*/
      	if ([UIImagePickerController isCameraDeviceAvailable:UIImagePickerControllerCameraDeviceRear]) {
                	
      	}
        
      	// 判斷閃光燈是否支持
      	if ([UIImagePickerController isFlashAvailableForCameraDevice:UIImagePickerControllerCameraDeviceFront]) {
                	
      	}
        
      	// 獲取數據來源支持的媒體類型
      	/*
      	  	UIImagePickerControllerSourceTypePhotoLibrary,      // 來自圖庫
      	  		"public.image",
      	  		"public.movie"
                 
      	  	UIImagePickerControllerSourceTypeCamera,            // 來自相機
    			...
                 
      	  	UIImagePickerControllerSourceTypeSavedPhotosAlbum   // 來自相冊
          		"public.image",
            	"public.movie"
    	*/
    	NSArray *mediaTypesArray = [UIImagePickerController availableMediaTypesForSourceType:UIImagePickerControllerSourceTypeSavedPhotosAlbum];
            	
        // 獲取相機擁有的模式
        /*
        	UIImagePickerControllerCameraDeviceRear,   // 后置攝像頭
        		...
                 
        	UIImagePickerControllerCameraDeviceFront   // 前置攝像頭
        		...
        */
        NSArray *captureModesArray = [UIImagePickerController availableCaptureModesForCameraDevice:UIImagePickerControllerCameraDeviceFront];
            
        // 設置數據來源
        /*
        	UIImagePickerControllerSourceTypePhotoLibrary,     // 來自圖庫,默認
        	UIImagePickerControllerSourceTypeCamera,           // 來自相機
         	UIImagePickerControllerSourceTypeSavedPhotosAlbum  // 來自相冊
        */
        imagePickerController.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
            
        // 設置媒體類型
        /*
        	kUTTypeImage 包含:
                 
        		kUTTypeImage;                // 抽象的圖片類型
        		kUTTypeJPEG;
        		kUTTypeJPEG2000;
        		kUTTypeTIFF;
        		kUTTypePICT;
        		kUTTypeGIF;
        		kUTTypePNG;
        		kUTTypeQuickTimeImage;
        		kUTTypeAppleICNS;
        		kUTTypeBMP;
        		kUTTypeICO
                 
        	kUTTypeMovie 包含:
                     
        		kUTTypeAudiovisualContent;   // 抽象的聲音視頻
        		kUTTypeMovie;                // 抽象的媒體格式(聲音和視頻)
        		kUTTypeVideo;                // 只有視頻沒有聲音
        		kUTTypeAudio;                // 只有聲音沒有視頻
        		kUTTypeQuickTimeMovie;
        		kUTTypeMPEG;
        		kUTTypeMPEG4;
        		kUTTypeMP3;
        		kUTTypeMPEG4Audio;
        		kUTTypeAppleProtectedMPEG4Audio
                 
        	需要 #import <MobileCoreServices/MobileCoreServices.h> 才能用 kUTTypeImage 和 KUTTypeMovie 。
        	
        	default value is an array containing kUTTypeImage.
    	*/
    	imagePickerController.mediaTypes = @[(NSString *)kUTTypeImage, (NSString *)kUTTypeMovie];
            
    	// 設置攝像頭
    	/*
    		UIImagePickerControllerCameraDeviceRear,   // 后置攝像頭,默認
    		UIImagePickerControllerCameraDeviceFront   // 前置攝像頭
    	*/
    	imagePickerController.cameraDevice = UIImagePickerControllerCameraDeviceFront;
            
    	// 設置相機模式
    	/*
    		UIImagePickerControllerCameraCaptureModePhoto,  // 照相模式,默認
    		UIImagePickerControllerCameraCaptureModeVideo   // 錄像模式
    	*/
    	imagePickerController.cameraCaptureMode = UIImagePickerControllerCameraCaptureModePhoto;
            
    	// 設置閃光燈模式
    	/*
    		UIImagePickerControllerCameraFlashModeOff  = -1,  // 關
    		UIImagePickerControllerCameraFlashModeAuto = 0,   // 自動,默認
    		UIImagePickerControllerCameraFlashModeOn   = 1    // 開
    	*/
    	imagePickerController.cameraFlashMode = UIImagePickerControllerCameraFlashModeOn;
        
    	// 設置錄像質量
    	/*
    		UIImagePickerControllerQualityTypeHigh = 0,     // 高質量,highest quality
    		UIImagePickerControllerQualityTypeMedium = 1,   // 中質量,默認,Wi-Fi
    		UIImagePickerControllerQualityTypeLow = 2,      // 低質量,cellular network
    		UIImagePickerControllerQualityType640x480 = 3,  // VGA 質量,VGA quality
                 
    		UIImagePickerControllerQualityTypeIFrame1280x720 = 4,
    		UIImagePickerControllerQualityTypeIFrame960x540 = 5
    		
    		apply only if mediaTypes includes kUTTypeMovie
    	*/
    	imagePickerController.videoQuality = UIImagePickerControllerQualityTypeHigh;
            
    	// 設置錄像時間長度
      	/*
      		default is 10 minutes. apply only mediaTypes includes kUTTypeMovie
      	*/
    	imagePickerController.videoMaximumDuration = 600;
        
    	// 設置是否顯示相機原生 UI
    	/*
    		set to NO to hide all standard camera UI. default is YES. available sourceType is Camera.
    	*/
      	imagePickerController.showsCameraControls = YES;
        
    	// 自定義相機視圖
    	/*
    		set a view to overlay the preview view. default is YES. available sourceType is Camera.
    	*/
    	imagePickerController.cameraOverlayView = myView;
            
    	// 改變相機視圖
    	/*
    		set the transform of the preview view. default is YES. available sourceType is Camera.
    		
    		旋轉 45 度,需要輸入的參數為弧度,45/180 * M_PI,1 度 = PI/180 弧度
       	*/
    	imagePickerController.cameraViewTransform = CGAffineTransformMakeRotation(0.25 * M_PI);
        
    	// 打開相機/相冊/圖庫
    	/*
    		訪問設置的數據來源界面
    	*/
    	[self presentViewController:imagePickerController animated:YES completion:nil];
        
    	// 拍照
    	/*
    		拍攝照片
    	*/
    	[imagePickerController takePicture];
        
    	// 錄像
        
        	// 開始錄像
        	[imagePickerController startVideoCapture];
    
        	// 停止錄像
          	[imagePickerController stopVideoCapture];
    
    	// 退出當前界面(相機/相冊/圖庫)
    	/*
    		在 UIImagePickerControllerDelegate 協議方法中調用
    	*/
    	[picker dismissViewControllerAnimated:YES completion:nil];
    
    	// 獲取選取媒體類型(圖片或者視頻)
    	/*
    		選取的信息都在 info 中,info 是一個字典。字典中的鍵:
    
    			UIImagePickerControllerMediaType;     // 指定用戶選擇的媒體類型,包含着 kUTTypeImage 和 kUTTypeMovie
    			UIImagePickerControllerOriginalImage; // 原始圖片
    			UIImagePickerControllerEditedImage;   // 修改后的圖片,只有打開編輯模式 info 里才有此鍵值對
    			UIImagePickerControllerCropRect;      // 裁剪尺寸,只有打開編輯模式 info 里才有此鍵值對
    			UIImagePickerControllerMediaURL;      // 媒體的 URL
    			UIImagePickerControllerReferenceURL;  // 原件的 URL
    			UIImagePickerControllerMediaMetadata  // 當數據來源是照相機的時候這個值才有效
    
    			kUTTypeImage 包含:
    
    				kUTTypeImage;    			// 抽象的圖片類型
    				kUTTypeJPEG;
    				kUTTypeJPEG2000;
    				kUTTypeTIFF;
    				kUTTypePICT;
    				kUTTypeGIF;
    				kUTTypePNG;
    				kUTTypeQuickTimeImage;
    				kUTTypeAppleICNS;
    				kUTTypeBMP;
    				kUTTypeICO
    
    			kUTTypeMovie 包含:
    
    				kUTTypeAudiovisualContent;  // 抽象的聲音視頻
    				kUTTypeMovie;               // 抽象的媒體格式(聲音和視頻)
    				kUTTypeVideo;               // 只有視頻沒有聲音
    				kUTTypeAudio;               // 只有聲音沒有視頻
    				kUTTypeQuickTimeMovie;
    				kUTTypeMPEG;
    				kUTTypeMPEG4;
    				kUTTypeMP3;
    				kUTTypeMPEG4Audio;
    				kUTTypeAppleProtectedMPEG4Audio
    
    			需要 #import <MobileCoreServices/MobileCoreServices.h> 才能用 kUTTypeImage 和 KUTTypeMovie 。
    	*/
    
    		// 直接處理點擊的媒體資源
    
    			UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 20, self.view.frame.size.width, 
    			                                                                              self.view.frame.size.height - 20)];
    			[self.view addSubview:imageView];
    
    			// 獲取點擊的圖片
    			imageView.image = [info objectForKey:UIImagePickerControllerOriginalImage];
    
    		// 先判斷點擊的資源類型再處理
    
    			// 判斷點擊的媒體資源類型
    			if ([[info objectForKey:UIImagePickerControllerMediaType] isEqualToString:(NSString *)kUTTypeImage]) {
    
    				UIImageView *headerImageView = [[UIImageView alloc] initWithFrame:CGRectMake(20, 40, 100, 100)];
    				headerImageView.layer.borderColor = [[UIColor greenColor] CGColor];
    				headerImageView.layer.borderWidth = 3;
    				[self.view addSubview:headerImageView];
    
    				// 獲取點擊的圖片
    				headerImageView.image = [info objectForKey:UIImagePickerControllerEditedImage];
    			}
    
  • Swift

      	// 設置代理,需遵守 UIImagePickerControllerDelegate, UINavigationControllerDelegate 協議
    	imagePickerController.delegate = self
        
      	// 設置是否需要做圖片編輯
      	imagePickerController.allowsEditing = true
        
      	// 判斷設備數據來源是否支持
      	/*
      		case PhotoLibrary       // 來自圖庫
      		case Camera             // 來自相機
      		case SavedPhotosAlbum   // 來自相冊
      	*/
      	if UIImagePickerController.isSourceTypeAvailable(.PhotoLibrary) {
    
      	}
        
      	// 判斷攝像頭是否支持
      	/*
      		case Rear   // 后置攝像頭
      		case Front  // 前置攝像頭
      	*/
      	if UIImagePickerController.isCameraDeviceAvailable(.Rear) {
                	
      	}
        
      	// 判斷閃光燈是否支持
      	if UIImagePickerController.isFlashAvailableForCameraDevice(.Front) {
                	
      	}
        
      	// 獲取數據來源支持的媒體類型
      	/*
      		PhotoLibrary,       // 來自圖庫
      			"public.image",
      			"public.movie"
                 
      		Camera,             // 來自相機
      			...
                 
      		SavedPhotosAlbum    // 來自相冊
      			"public.image",
      			"public.movie"
      	*/
      	let mediaTypesArray = UIImagePickerController.availableMediaTypesForSourceType(.SavedPhotosAlbum)
            		
      	// 獲取相機擁有的模式
      	/*
      		Rear,	  	// 后置攝像頭
      			...
                 
      		Front	  	// 前置攝像頭
      			 ...
      	*/
      	let captureModesArray = UIImagePickerController.availableCaptureModesForCameraDevice(.Front)
            		
      	// 設置數據來源
      	/*
      		case PhotoLibrary       // 來自圖庫
      		case Camera             // 來自相機
      		case SavedPhotosAlbum   // 來自相冊
      	*/
      	imagePickerController.sourceType = .PhotoLibrary
        
      	// 設置媒體類型
      	/*
      		kUTTypeImage 包含:
      			kUTTypeImage;               // 抽象的圖片類型
      			kUTTypeJPEG;
      			kUTTypeJPEG2000;
      			kUTTypeTIFF;
      			kUTTypePICT;
      			kUTTypeGIF;
      			kUTTypePNG;
      			kUTTypeQuickTimeImage;
      			kUTTypeAppleICNS;
      			kUTTypeBMP;
      			kUTTypeICO
                     
      		kUTTypeMovie 包含:
      			kUTTypeAudiovisualContent;  // 抽象的聲音視頻
      			kUTTypeMovie;               // 抽象的媒體格式(聲音和視頻)
      			kUTTypeVideo;               // 只有視頻沒有聲音
      			kUTTypeAudio;               // 只有聲音沒有視頻
      			kUTTypeQuickTimeMovie;
      			kUTTypeMPEG;
      			kUTTypeMPEG4;
      			kUTTypeMP3;
      			kUTTypeMPEG4Audio;
      			kUTTypeAppleProtectedMPEG4Audio
                 
      		需要 import MobileCoreServices 才能用 kUTTypeImage 和 KUTTypeMovie 。
      		
      		default value is an array containing kUTTypeImage.
      	*/
     	imagePickerController.mediaTypes = [String(kUTTypeImage), String(kUTTypeMovie)]
        
      	// 設置攝像頭
      	/*
      		Rear,  // 后置攝像頭,默認
      		Front  // 前置攝像頭
      	*/
      	imagePickerController.cameraDevice = .Front
            
      	// 設置相機模式
      	/*
      		Photo,  // 照相模式,默認
      		Video   // 錄像模式
      	*/
      	imagePickerController.cameraCaptureMode = .Photo
            
      	// 設置閃光燈模式
      	/*
      		Off  = -1,  // 關
      		Auto = 0,   // 自動,默認
      		On   = 1    // 開
      	*/
      	imagePickerController.cameraFlashMode = .On
            
      	// 設置錄像質量
      	/*
      		TypeHigh = 0,    // 高質量,      highest quality
      		TypeMedium = 1,  // 中質量,默認, medium quality, Wi-Fi
      		TypeLow = 2,     // 低質量,      lowest quality, cellular network
      		Type640x480 = 3, // VGA 質量,    VGA quality
                 
      		TypeIFrame1280x720 = 4,
      		TypeIFrame960x540 = 5
      		
      		apply only if mediaTypes includes kUTTypeMovie
      	*/
      	imagePickerController.videoQuality = .TypeHigh
        
      	// 設置錄像時間長度
      	/*
      		default is 10 minutes. apply only mediaTypes includes kUTTypeMovie
      	*/
      	imagePickerController.videoMaximumDuration = 600
        
      	// 設置是否顯示相機原生 UI
      	/*
      		set to NO to hide all standard camera UI. default is YES. available sourceType is Camera.
      	*/
      	imagePickerController.showsCameraControls = true
        
      	// 自定義相機視圖
    	/*
    		set a view to overlay the preview view. default is YES. available sourceType is Camera.
    	*/
      	imagePickerController.cameraOverlayView = myView
        
      	// 改變相機視圖
      	/*
      		set the transform of the preview view. default is YES. available sourceType is Camera.
      		
      		旋轉 45 度,需要輸入的參數為弧度,45/180 * M_PI,1 度 = PI/180 弧度
    	*/
      	imagePickerController.cameraViewTransform = CGAffineTransformMakeRotation(0.25 * CGFloat(M_PI))
      	
    	// 打開相機/相冊/圖庫
      	/*
      		訪問設置的數據來源界面
      	*/
      	self.presentViewController(imagePickerController, animated: true, completion: nil)
        
    	// 拍照
      	/*
      		拍攝照片
      	*/
    	imagePickerController.takePicture()
    	
    	// 錄像
        
        	// 開始錄像
    		imagePickerController.startVideoCapture()
    
         	// 停止錄像
    		imagePickerController.stopVideoCapture()
    
    	// 退出當前界面(相機/相冊/圖庫)
    	/*
    		在 UIImagePickerControllerDelegate 協議方法中調用 
    	*/
    	picker.dismissViewControllerAnimated(true, completion: nil)
                           		
    	// 獲取選取媒體類型(圖片或者視頻)
    	/*
    		選取的信息都在 info 中,info 是一個字典。字典中的鍵:
    	
    			UIImagePickerControllerMediaType;       // 指定用戶選擇的媒體類型,包含着 kUTTypeImage 和 kUTTypeMovie
    			UIImagePickerControllerOriginalImage;   // 原始圖片
    			UIImagePickerControllerEditedImage;     // 修改后的圖片,只有打開編輯模式 info 里才有此鍵值對
    			UIImagePickerControllerCropRect;        // 裁剪尺寸,只有打開編輯模式 info 里才有此鍵值對
    			UIImagePickerControllerMediaURL;        // 媒體的 URL
    			UIImagePickerControllerReferenceURL;    // 原件的 URL
    			UIImagePickerControllerMediaMetadata    // 當數據來源是照相機的時候這個值才有效
                 
    			kUTTypeImage 包含:
    				kUTTypeImage;                // 抽象的圖片類型
    				kUTTypeJPEG;
    				kUTTypeJPEG2000;
    				kUTTypeTIFF;
    				kUTTypePICT;
    				kUTTypeGIF;
    				kUTTypePNG;
    				kUTTypeQuickTimeImage;
    				kUTTypeAppleICNS;
    				kUTTypeBMP;
    				kUTTypeICO
                 
    			kUTTypeMovie 包含:
    				kUTTypeAudiovisualContent;   // 抽象的聲音視頻
    				kUTTypeMovie;                // 抽象的媒體格式(聲音和視頻)
    				kUTTypeVideo;                // 只有視頻沒有聲音
    				kUTTypeAudio;                // 只有聲音沒有視頻
    				kUTTypeQuickTimeMovie;
    				kUTTypeMPEG;
    				kUTTypeMPEG4;
    				kUTTypeMP3;
    				kUTTypeMPEG4Audio;
    				kUTTypeAppleProtectedMPEG4Audio
    
    			需要 import MobileCoreServices 才能用 kUTTypeImage 和 KUTTypeMovie 。
    	*/
    
    		// 直接處理點擊的媒體資源
            
    			let imageView = UIImageView(frame: CGRectMake(0, 20, self.view.frame.size.width, self.view.frame.size.height - 20))
    			self.view.addSubview(imageView)
            
            	// 獲取點擊的圖片
    			imageView.image = info[UIImagePickerControllerOriginalImage] as? UIImage
            
    		// 先判斷點擊的資源類型再處理
            
            	// 判斷點擊的媒體資源類型
    			if (info[UIImagePickerControllerMediaType]?.isEqualToString(String(kUTTypeImage)) != nil) {
                
    				let headerImageView = UIImageView(frame: CGRectMake(20, 40, 100, 100))
    				headerImageView.layer.borderColor = UIColor.greenColor().CGColor
    				headerImageView.layer.borderWidth = 3
    				self.view.addSubview(headerImageView)
                
                	// 獲取點擊的圖片
    				headerImageView.image = info[UIImagePickerControllerEditedImage] as? UIImage
    			}
    

3、UIImagePickerControllerDelegate 協議方法

  • Objective-C

    	// 取消選擇,點擊界面中的取消(Cancel)按鈕時觸發
    	- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker {
    
    	}
    
    	// 選擇完成,點擊界面中的某個圖片或者選擇(Choose)按鈕時觸發
    	- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
        
    	}
    
  • Swift

    	// 取消選擇,點擊界面中的取消(Cancel)按鈕時觸發
    	func imagePickerControllerDidCancel(picker: UIImagePickerController) {
      	
    	}
    	
    	// 選擇完成,點擊界面中的某個圖片或者選擇(Choose)按鈕時觸發
    	func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject]) {
       
    	}
    


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM