Одни и те же файлы имеют разный размер в IPAD1 и IPAD2, когда я получаю с помощью блока ALAsset - PullRequest
0 голосов
/ 23 ноября 2011

Я синхронизировал изображение на 2 Ipads (скажем, IPAD1 и IPAD2) через ITunes. Затем, когда я получил изображения с помощью блока ALAssetLibrary, размер файла в 2 Ipads отличается.

(IPAD1 Размер файла: 0,024059, IPAD2 Размер файла: 0,024325).

Могу ли я знать, почему одни и те же файлы имеют разный размер в IPAD1 и IPAD2?

Однако я сохранил изображение в IPAD1 и IPAD2 через браузер Safari, нажав на изображение с одной и той же веб-страницы, и получил тот же размер файла для изображения в Ipad1 и Ipad2 при получении через ALAssetLibarary.

Пожалуйста, скажите мне ваши ценные предложения ....

Использование


I am doing the image comparison in Ipad PhotoLibrary.
Whenever an Image transfer request is coming from another device, i have to test the image file exist in PhotoLibrary.
So mentor image request will have CRC code of the requested image which will uneque for the same image file and i am generating the CRC code for all my photoLibrary images and comparing it with the requested image CRC code.
So whenever these 2 CRC's are equal , i can easily identify the files are same.

Код, который я использовал для получения изображения PhotoLibrary:

ALAssetsLibraryAssetForURLResultBlock resultblock = ^(ALAsset *myasset)
  {
   ALAssetRepresentation *rep = [myasset defaultRepresentation];

   NSLog(@"GOT ASSET, File size: %f", [rep size] / (1024.0f*1024.0f));

   uint8_t* buffer = malloc([rep size]);

   NSError* error = NULL;

   NSUInteger bytes = [rep getBytes:buffer fromOffset:0 length:[rep size] error:&error];

       if (bytes == [rep size])
       {   

            defaultRepresentationData = [[NSData dataWithBytes:buffer length:bytes] retain];

            CGImageRef iref = [rep fullResolutionImage];
            UIImage *photLibraryImage  = [UIImage imageWithCGImage:iref];


             NSData *imageData = UIImagePNGRepresentation(photLibraryImage); //convert image into .png format.
             const int imageCRC = [self CRCForImage:imageData]]; //getting CRC value for image data

             NSLog([NSString stringWithFormat:@"@@@@@@@@ image CRC is:%u",imageCRC ]);       

       }
       else
       {
            NSLog(@"Error '%@' reading bytes from asset: '%@'", [error localizedDescription]); //assetURL);
       }

   free(buffer);

   // notifies the lock that "all tasks are finished"

  };

     //
      ALAssetsLibraryAccessFailureBlock failureblock  = ^(NSError *myerror)
      {
           NSLog(@"NOT GOT ASSET");  
      };

  NSURL *asseturl = [NSURL URLWithString:fileName]; 

   ALAssetsLibrary* assetslibrary = [[[ALAssetsLibrary alloc] init] autorelease];
   [assetslibrary assetForURL:asseturl  resultBlock:resultblock  failureBlock:failureblock];    

 }

NSLog (@ "ПОЛУЧИЛ АКТИВ, Размер файла:% f", [размер повторения] / (1024.0f * 1024.0f)); печать разных значений одного и того же файла на разных устройствах.

Подробности журнала консоли


Ipad1


ПОЛУЧИЛ АКТИВ, Размер файла: 0.024059 Изображение CRC: 2659650838

Ipad2


GOT ASSET, Размер файла: 0.024325 @@@@@@@@ image CRC: 331786167

ВЕРСИЯ IPAD ДЕТАЛИ


IPAD1: Версия: 4.2.1 (8C148) Модель: MB292LL

IPAD2: Версия: 4.3.5 (8L1) Модель: MB292LL

Спасибо.

1 Ответ

1 голос
/ 23 ноября 2011

Это деталь реализации. Там нет никакой гарантии, что они будут идентичны. Метаданные (например, информация об оборудовании, серийный номер, время суток и т. Д.) Могут отличаться для разных устройств, например.

Если вы сообщите нам более широкую цель, которую вы пытаетесь достичь, мы можем помочь вам найти альтернативное решение для сравнения размеров файлов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...