didFinishPickingMediaWithInfo 返回零照片

发布于 2024-09-06 12:06:55 字数 1304 浏览 8 评论 0原文

我正在努力捕获在 4.0 中返回的图像,使用

- (void)imagePickerController:(UIImagePickerController *)picker 
    didFinishPickingMediaWithInfo:(NSDictionary *)info
{
    [[picker parentViewController] dismissModalViewControllerAnimated:YES]; 

    // MediaType can be kUTTypeImage or kUTTypeMovie. If it's a movie then you
    // can get the URL to the actual file itself. This example only looks for images.
    //   
    NSString* mediaType = [info objectForKey:UIImagePickerControllerMediaType];
    // NSString* videoUrl = [info objectForKey:UIImagePickerControllerMediaURL];

    // Try getting the edited image first. If it doesn't exist then you get the
    // original image.
    //
    if (CFStringCompare((CFStringRef) mediaType,  kUTTypeImage, 0) == kCFCompareEqualTo) {               
        UIImage* picture = [info objectForKey:UIImagePickerControllerEditedImage];
        if (!picture)
            picture = [info objectForKey:UIImagePickerControllerOriginalImage];             

        // **picture is always nil
            // info dictionary count = 1


    }

}

发生的情况是信息字典总是返回一个条目:

{ UIImagePickerControllerMediaType = “公共.图像”;

这很棒,但从来没有图像。

我使用了这个论坛上的一个很好的例子来做到这一点,我很确定调用是正确的,但从来没有图像。

提前致谢!

I am working to capture an image that is returned in 4.0 using

- (void)imagePickerController:(UIImagePickerController *)picker 
    didFinishPickingMediaWithInfo:(NSDictionary *)info
{
    [[picker parentViewController] dismissModalViewControllerAnimated:YES]; 

    // MediaType can be kUTTypeImage or kUTTypeMovie. If it's a movie then you
    // can get the URL to the actual file itself. This example only looks for images.
    //   
    NSString* mediaType = [info objectForKey:UIImagePickerControllerMediaType];
    // NSString* videoUrl = [info objectForKey:UIImagePickerControllerMediaURL];

    // Try getting the edited image first. If it doesn't exist then you get the
    // original image.
    //
    if (CFStringCompare((CFStringRef) mediaType,  kUTTypeImage, 0) == kCFCompareEqualTo) {               
        UIImage* picture = [info objectForKey:UIImagePickerControllerEditedImage];
        if (!picture)
            picture = [info objectForKey:UIImagePickerControllerOriginalImage];             

        // **picture is always nil
            // info dictionary count = 1


    }

}

What is happening is that the info dictionary always returns with a single entry:

{
UIImagePickerControllerMediaType =
"public.image";

which is great, but there is never an image.

I was using a great example from this forum to do this, and I am pretty sure the calls are correct, but never an image.

Thanks in advance!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(8

岛徒 2024-09-13 12:06:55

我知道这已经是几个月后的事了,但我为此苦苦挣扎了几个小时,并在这个网站和 iphonedevsdk.com 上发现了同样的问题,但从未找到有效的答案。

总而言之,如果图像是从相机胶卷/照片库中选取的,则它工作得很好,但如果图像是用相机拍摄的新照片,则它永远不会工作。好吧,以下是如何让它同时适用于两者:

在尝试对信息字典执行任何操作之前,您必须关闭并释放 UIImagePickerController。非常清楚:

这不起作用:

- (void)imagePickerController:(UIImagePickerController *)picker 
                      didFinishPickingMediaWithInfo:(NSDictionary *)info {

          // No good with the edited image (if you allowed editing)
  myUIImageView.image = [info objectForKey:UIImagePickerControllerEditedImage];
          // AND no good with the original image
  myUIImageView.image = [info objectForKey:UIImagePickerControllerOriginalImage];
          // AND no doing some other kind of assignment
  UIImage *myImage = [info objectForKey:UIImagePickerControllerEditedImage];

  [picker dismissModalViewControllerAnimated:YES];
  [picker release];
}

在所有这些情况下,图像都将为零。

然而,通过首先释放 UIImagePickerController 的魔力...

这确实有效:

- (void)imagePickerController:(UIImagePickerController *)picker 
                      didFinishPickingMediaWithInfo:(NSDictionary *)info {

  [picker dismissModalViewControllerAnimated:YES];
  [picker release];

          // Edited image works great (if you allowed editing)
  myUIImageView.image = [info objectForKey:UIImagePickerControllerEditedImage];
          // AND the original image works great
  myUIImageView.image = [info objectForKey:UIImagePickerControllerOriginalImage];
          // AND do whatever you want with it, (NSDictionary *)info is fine now
  UIImage *myImage = [info objectForKey:UIImagePickerControllerEditedImage];
}

非常简单,但仅此而已。

I know this is many months later, but I struggled with this for hours, and found this same question all over this site and iphonedevsdk.com, but never with a working answer.

To summarize, if the image was picked from the camera roll/photo library it worked fine, but if the image was a new photo take with the camera it never worked. Well, here's how to make it work for both:

You have to dismiss and release the UIImagePickerController before you try to do anything with the info dictionary. To be super-clear:

This DOES NOT work:

- (void)imagePickerController:(UIImagePickerController *)picker 
                      didFinishPickingMediaWithInfo:(NSDictionary *)info {

          // No good with the edited image (if you allowed editing)
  myUIImageView.image = [info objectForKey:UIImagePickerControllerEditedImage];
          // AND no good with the original image
  myUIImageView.image = [info objectForKey:UIImagePickerControllerOriginalImage];
          // AND no doing some other kind of assignment
  UIImage *myImage = [info objectForKey:UIImagePickerControllerEditedImage];

  [picker dismissModalViewControllerAnimated:YES];
  [picker release];
}

In all of those cases the image will be nil.

However, via the magic of releasing the UIImagePickerController first...

This DOES work:

- (void)imagePickerController:(UIImagePickerController *)picker 
                      didFinishPickingMediaWithInfo:(NSDictionary *)info {

  [picker dismissModalViewControllerAnimated:YES];
  [picker release];

          // Edited image works great (if you allowed editing)
  myUIImageView.image = [info objectForKey:UIImagePickerControllerEditedImage];
          // AND the original image works great
  myUIImageView.image = [info objectForKey:UIImagePickerControllerOriginalImage];
          // AND do whatever you want with it, (NSDictionary *)info is fine now
  UIImage *myImage = [info objectForKey:UIImagePickerControllerEditedImage];
}

Crazy simple, but that's all there is to it.

静谧幽蓝 2024-09-13 12:06:55

虽然 Matthew Frederick 的答案最受欢迎并且长期以来一直是适当的回应,但从 iOS 5.0 开始,苹果提供了 dismissViewControllerAnimated:completion: 来替换现已弃用的(从 iOS 6.0 开始)dismissViewControllerAnimated :。

在完成块中执行图像信息字典检索应该对所有人都更有意义。

以上面的例子为例,现在看起来像:

- (void)    imagePickerController:(UIImagePickerController *)picker 
    didFinishPickingMediaWithInfo:(NSDictionary *)info 
{
    [picker dismissViewControllerAnimated:YES completion:^{
          // Edited image works great (if you allowed editing)
        myUIImageView.image = [info objectForKey:UIImagePickerControllerEditedImage];
          // AND the original image works great
        myUIImageView.image = [info objectForKey:UIImagePickerControllerOriginalImage];
          // AND do whatever you want with it, (NSDictionary *)info is fine now
        UIImage *myImage = [info objectForKey:UIImagePickerControllerEditedImage];
    }];
}

whilst Matthew Frederick's answer is most popular and has long been the appropriate response, as of iOS 5.0, apple made available dismissViewControllerAnimated:completion:, to replace the now deprecated (as of iOS 6.0) dismissViewControllerAnimated:.

performing the image info dictionary retrieval in the completion block should hopefully make more sense to all.

to take his example from above, it would now look like:

- (void)    imagePickerController:(UIImagePickerController *)picker 
    didFinishPickingMediaWithInfo:(NSDictionary *)info 
{
    [picker dismissViewControllerAnimated:YES completion:^{
          // Edited image works great (if you allowed editing)
        myUIImageView.image = [info objectForKey:UIImagePickerControllerEditedImage];
          // AND the original image works great
        myUIImageView.image = [info objectForKey:UIImagePickerControllerOriginalImage];
          // AND do whatever you want with it, (NSDictionary *)info is fine now
        UIImage *myImage = [info objectForKey:UIImagePickerControllerEditedImage];
    }];
}
我们的影子 2024-09-13 12:06:55

我已经尝试了上述所有方法,但在 iPad 6.0/6.1 模拟器上没有运气,但是我发现信息包含“UIImagePickerControllerReferenceURL”键,这是我的代码:

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
  [picker dismissViewControllerAnimated:YES completion:NULL];

  UIImage* image = [info objectForKey:UIImagePickerControllerOriginalImage];
  if(NULL == image){
      [MyImageLoader loadImageFromAssertByUrl:[info objectForKey:@"UIImagePickerControllerReferenceURL"]
                                   completion:^(UIImage* img){
                                        //img not null here
                                   }];
  }else{
      //image not null here
  }
}

loadImageFromAssertByUrl 的代码是:

+(void) loadImageFromAssertByUrl:(NSURL *)url completion:(void (^)(UIImage*)) completion{
  ALAssetsLibrary *assetLibrary=[[ALAssetsLibrary alloc] init];
  [assetLibrary assetForURL:url resultBlock:^(ALAsset *asset) {
      ALAssetRepresentation *rep = [asset defaultRepresentation];
      Byte *buffer = (Byte*)malloc(rep.size);
      NSUInteger buffered = [rep getBytes:buffer fromOffset:0.0 length:rep.size error:nil];
      NSData *data = [NSData dataWithBytesNoCopy:buffer length:buffered freeWhenDone:YES];
      UIImage* img = [UIImage imageWithData:data];
      completion(img);
  } failureBlock:^(NSError *err) {
      NSLog(@"Error: %@",[err localizedDescription]);
  }];
}

I've tried all above, but no luck on iPad 6.0/6.1 simulator, however i've found that info contains "UIImagePickerControllerReferenceURL" key and here is my code:

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
  [picker dismissViewControllerAnimated:YES completion:NULL];

  UIImage* image = [info objectForKey:UIImagePickerControllerOriginalImage];
  if(NULL == image){
      [MyImageLoader loadImageFromAssertByUrl:[info objectForKey:@"UIImagePickerControllerReferenceURL"]
                                   completion:^(UIImage* img){
                                        //img not null here
                                   }];
  }else{
      //image not null here
  }
}

and code for loadImageFromAssertByUrl is:

+(void) loadImageFromAssertByUrl:(NSURL *)url completion:(void (^)(UIImage*)) completion{
  ALAssetsLibrary *assetLibrary=[[ALAssetsLibrary alloc] init];
  [assetLibrary assetForURL:url resultBlock:^(ALAsset *asset) {
      ALAssetRepresentation *rep = [asset defaultRepresentation];
      Byte *buffer = (Byte*)malloc(rep.size);
      NSUInteger buffered = [rep getBytes:buffer fromOffset:0.0 length:rep.size error:nil];
      NSData *data = [NSData dataWithBytesNoCopy:buffer length:buffered freeWhenDone:YES];
      UIImage* img = [UIImage imageWithData:data];
      completion(img);
  } failureBlock:^(NSError *err) {
      NSLog(@"Error: %@",[err localizedDescription]);
  }];
}
卖梦商人 2024-09-13 12:06:55

某些版本的 XCode 和 Mountain Lion 还存在一个已知错误。检查您的控制台是否有以下消息:

2013-01-17 21:36:34.946 3sure-ios[5341:1803] 未找到命名服务“com.apple.PersistentURLTranslator.Gatekeeper”。 assetd 已关闭或配置错误。事情不会按照您期望的方式工作。

如果出现该消息,它可能不会工作。在实际的 iOS 设备上检查您的应用程序。

尽管如此,重新启动模拟器和 XCode 似乎可以解决该问题。

There's also a known bug with some versions of XCode and Mountain Lion. Check your console for this message:

2013-01-17 21:36:34.946 3sure-ios[5341:1803] Named service 'com.apple.PersistentURLTranslator.Gatekeeper' not found. assetsd is down or misconfigured. Things will not work the way you expect them to.

It probably won't work if that message appears. Check your app at the actual iOS device.

Nevetheless, restarting both simulator and XCode seems to fix the issue.

柒夜笙歌凉 2024-09-13 12:06:55

我有同样的症状,但就我而言,结果证明我在 UIImagePickerController 层次结构中的某个类别上覆盖了“uuid”或“setUUID”?我猜 CoreData 需要这些方法,否则它会变得非常非常混乱,而资源库都是 CoreData 的东西。

I had the same symptoms, but in my case it turned out I had a category on something in the UIImagePickerController hierarchy that overrode "uuid" or "setUUID"? I guess CoreData needs these methods or it gets very, very confused, and the asset library is all CoreData stuff.

感悟人生的甜 2024-09-13 12:06:55

使用

[[UIImagePickerController alloc] init];

而不是

[[UIImagePickerController alloc] initWithNibName:(NSString *) bundle:(NSBundle *)];

use

[[UIImagePickerController alloc] init];

instead of

[[UIImagePickerController alloc] initWithNibName:(NSString *) bundle:(NSBundle *)];
琉璃繁缕 2024-09-13 12:06:55
-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info 
{

    [picker dismissViewControllerAnimated:YES completion:NULL];
    //Image picker for nil value 
    UIImage* selectedImage = [info objectForKey:UIImagePickerControllerOriginalImage];
    NSLog(@"my Info :: %@", info);

    if(NULL == selectedImage){
      UIImage * selectedImage =  [PhotoViewController loadImageFromAssertByUrl:[info objectForKey:@"UIImagePickerControllerReferenceURL"]
                                     completion:^(UIImage * selectedImage){
                                         //img not null here
                                         NSLog(@"img2 ::: %@", selectedImage);
                                         uploadImg.image = selectedImage;
                                         [self.view addSubview:PermissionView];
                                     }];
    }else{
        //image not null here
        NSLog(@"Up IMG00 :: %@", uploadImg.image);
        NSLog(@"Sel IMG00 :: %@", selectedImage);
        uploadImg.image = [selectedImage retain];
        NSLog(@"Up IMG22 :: %@", uploadImg.image);
        NSLog(@"Sel IMG22 :: %@", selectedImage);

    }
}


+(UIImage *) loadImageFromAssertByUrl:(NSURL *)url completion:(void (^)(UIImage*)) completion{


    __block UIImage* img;

    ALAssetsLibrary *assetLibrary=[[ALAssetsLibrary alloc] init];

    [assetLibrary assetForURL:url resultBlock:^(ALAsset *asset) {
        ALAssetRepresentation *rep = [asset defaultRepresentation];
        Byte *buffer = (Byte*)malloc(rep.size);
        NSUInteger buffered = [rep getBytes:buffer fromOffset:0.0 length:rep.size error:nil];
        NSData *data = [NSData dataWithBytesNoCopy:buffer length:buffered freeWhenDone:YES];
        img = [UIImage imageWithData:data];
        completion(img);
        NSLog(@"img ::: %@", img);
    } failureBlock:^(NSError *err) {
        NSLog(@"Error: %@",[err localizedDescription]);
    }];

    return img;
}
-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info 
{

    [picker dismissViewControllerAnimated:YES completion:NULL];
    //Image picker for nil value 
    UIImage* selectedImage = [info objectForKey:UIImagePickerControllerOriginalImage];
    NSLog(@"my Info :: %@", info);

    if(NULL == selectedImage){
      UIImage * selectedImage =  [PhotoViewController loadImageFromAssertByUrl:[info objectForKey:@"UIImagePickerControllerReferenceURL"]
                                     completion:^(UIImage * selectedImage){
                                         //img not null here
                                         NSLog(@"img2 ::: %@", selectedImage);
                                         uploadImg.image = selectedImage;
                                         [self.view addSubview:PermissionView];
                                     }];
    }else{
        //image not null here
        NSLog(@"Up IMG00 :: %@", uploadImg.image);
        NSLog(@"Sel IMG00 :: %@", selectedImage);
        uploadImg.image = [selectedImage retain];
        NSLog(@"Up IMG22 :: %@", uploadImg.image);
        NSLog(@"Sel IMG22 :: %@", selectedImage);

    }
}


+(UIImage *) loadImageFromAssertByUrl:(NSURL *)url completion:(void (^)(UIImage*)) completion{


    __block UIImage* img;

    ALAssetsLibrary *assetLibrary=[[ALAssetsLibrary alloc] init];

    [assetLibrary assetForURL:url resultBlock:^(ALAsset *asset) {
        ALAssetRepresentation *rep = [asset defaultRepresentation];
        Byte *buffer = (Byte*)malloc(rep.size);
        NSUInteger buffered = [rep getBytes:buffer fromOffset:0.0 length:rep.size error:nil];
        NSData *data = [NSData dataWithBytesNoCopy:buffer length:buffered freeWhenDone:YES];
        img = [UIImage imageWithData:data];
        completion(img);
        NSLog(@"img ::: %@", img);
    } failureBlock:^(NSError *err) {
        NSLog(@"Error: %@",[err localizedDescription]);
    }];

    return img;
}
醉城メ夜风 2024-09-13 12:06:55

需要遵循以下步骤:
1)制作UIActionSheet
2) 选择必要的源类型 - 加载资源
3) didFinishPickingMediaWithInfo - 从收到的图像字典中设置图像

    - (IBAction)actionButtonUpload:(id)sender {

             UIActionSheet *actionSheet = [[UIActionSheet alloc] initWithTitle:nil delegate:self 

cancelButtonTitle:@"Cancel" destructiveButtonTitle:nil otherButtonTitles:@"Camera",@"Photo Library", nil];

         [actionSheet showInView:self.view];

    }

    #pragma mark -- UIActionSheet Delegate
    -(void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex{

        UIImagePickerController *picker = [[UIImagePickerController alloc] init];

        picker.delegate = self;
        picker.allowsEditing = YES;
        UIAlertView *alert;


        switch (buttonIndex) {
            case 0:
                if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) {

                    NSLog(@"No camera!");
                    picker.sourceType = UIImagePickerControllerSourceTypeCamera;
                    [self presentViewController:picker animated:YES completion:NULL];


                } else {

                    alert = [[UIAlertView alloc]initWithTitle:@"Alumnikonnect" message:@"Camera is not available, please select a different media" delegate:nil cancelButtonTitle:@"Ok" otherButtonTitles:nil];

                    [alert show];

                }
                break;
            case 1:

                if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypePhotoLibrary]) {

                    picker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
                    [self presentViewController:picker animated:YES completion:NULL];


                } else {

                    alert = [[UIAlertView alloc]initWithTitle:@"Alumnikonnect" message:@"Photolibrary is not available, please select a different media" delegate:nil cancelButtonTitle:@"Ok" otherButtonTitles:nil];

                    [alert show];

                }

                break;

        }

    }


    #pragma mark - Image picker delegate

    - (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
    {
          self.imageEventPic.layer.cornerRadius =   self.imageEventPic.frame.size.height /2;
          self.imageEventPic.layer.masksToBounds = YES;
          self.imageEventPic.layer.borderWidth = 0;
          self.imageEventPic.layer.borderWidth = 1.0f;
          self.imageEventPic.layer.borderColor = [UIColor colorWithRed:0.212 green:0.255 blue:0.302 alpha:1.000].CGColor;


        self.labelUploadPic.hidden = YES;

        self.imageEventPic.image =  info[UIImagePickerControllerOriginalImage];

        [self dismissViewControllerAnimated:YES completion:NULL];

    }


    - (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker
    {
        [self dismissViewControllerAnimated:YES completion:NULL];

    }

    -(UIImage*)imageWithImage:(UIImage*)image
                 scaledToSize:(CGSize)newSize;
    {
        UIGraphicsBeginImageContext( newSize );

        [image drawInRect:CGRectMake(0,0,newSize.width,newSize.height)];

        UIImage* newImage = UIGraphicsGetImageFromCurrentImageContext();

        UIGraphicsEndImageContext();

        return newImage;

    }

Following Steps needs to be followed:
1) Make UIActionSheet
2) On selection necessary source type - load resrouces
3) didFinishPickingMediaWithInfo - set image from image Dictionary recieved

    - (IBAction)actionButtonUpload:(id)sender {

             UIActionSheet *actionSheet = [[UIActionSheet alloc] initWithTitle:nil delegate:self 

cancelButtonTitle:@"Cancel" destructiveButtonTitle:nil otherButtonTitles:@"Camera",@"Photo Library", nil];

         [actionSheet showInView:self.view];

    }

    #pragma mark -- UIActionSheet Delegate
    -(void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex{

        UIImagePickerController *picker = [[UIImagePickerController alloc] init];

        picker.delegate = self;
        picker.allowsEditing = YES;
        UIAlertView *alert;


        switch (buttonIndex) {
            case 0:
                if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) {

                    NSLog(@"No camera!");
                    picker.sourceType = UIImagePickerControllerSourceTypeCamera;
                    [self presentViewController:picker animated:YES completion:NULL];


                } else {

                    alert = [[UIAlertView alloc]initWithTitle:@"Alumnikonnect" message:@"Camera is not available, please select a different media" delegate:nil cancelButtonTitle:@"Ok" otherButtonTitles:nil];

                    [alert show];

                }
                break;
            case 1:

                if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypePhotoLibrary]) {

                    picker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
                    [self presentViewController:picker animated:YES completion:NULL];


                } else {

                    alert = [[UIAlertView alloc]initWithTitle:@"Alumnikonnect" message:@"Photolibrary is not available, please select a different media" delegate:nil cancelButtonTitle:@"Ok" otherButtonTitles:nil];

                    [alert show];

                }

                break;

        }

    }


    #pragma mark - Image picker delegate

    - (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
    {
          self.imageEventPic.layer.cornerRadius =   self.imageEventPic.frame.size.height /2;
          self.imageEventPic.layer.masksToBounds = YES;
          self.imageEventPic.layer.borderWidth = 0;
          self.imageEventPic.layer.borderWidth = 1.0f;
          self.imageEventPic.layer.borderColor = [UIColor colorWithRed:0.212 green:0.255 blue:0.302 alpha:1.000].CGColor;


        self.labelUploadPic.hidden = YES;

        self.imageEventPic.image =  info[UIImagePickerControllerOriginalImage];

        [self dismissViewControllerAnimated:YES completion:NULL];

    }


    - (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker
    {
        [self dismissViewControllerAnimated:YES completion:NULL];

    }

    -(UIImage*)imageWithImage:(UIImage*)image
                 scaledToSize:(CGSize)newSize;
    {
        UIGraphicsBeginImageContext( newSize );

        [image drawInRect:CGRectMake(0,0,newSize.width,newSize.height)];

        UIImage* newImage = UIGraphicsGetImageFromCurrentImageContext();

        UIGraphicsEndImageContext();

        return newImage;

    }
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文