Одни и те же файлы имеют разный размер в IPAD1 и IPAD2, когда я извлекаю их с помощью блока ALAsset

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

(Размер файла 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)); печать разных значений для одного и того же файла на разных устройствах.

Сведения о журнале консоли


айпад1


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

айпад2


ПОЛУЧИЛ АКТИВ, размер файла: 0.024325 @@@@@@@@image CRC: 331786167

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


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

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

Спасибо.


person adrian    schedule 23.11.2011    source источник


Ответы (1)


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

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

person Jonathan Grynspan    schedule 23.11.2011
comment
Я хотел бы добавить, что контрольной суммы CRC недостаточно, чтобы убедиться, что два изображения одинаковы! - person JustSid; 23.11.2011
comment
Конечно. Принцип сортировки говорит нам, что хэш из n битов не может различать более 2‹sup›*n*‹/sup› значений, а длина изображений почти всегда превышает 32 бита. Риск столкновения между произвольными данными настолько высок, что этого можно было ожидать. - person Jonathan Grynspan; 23.11.2011
comment
@Jonathan Grynspan@JustSid для меня тоже обнаружена такая же проблема. Я также сравниваю изображения в Ipad PhotoLibrary. Всякий раз, когда запрос на передачу изображения поступает с другого устройства, я должен проверить наличие файла изображения в PhotoLibrary. Итак, могу ли я узнать, как я могу проверить это? Каковы все детали изображения, которые мне нужно передать с устройства Sender в Learner для процесса проверки наличия файла изображения PhotoLibrary? - person Sandeep; 24.11.2011
comment
Ну а что объективно делает два изображения равными друг другу? - person Jonathan Grynspan; 24.11.2011
comment
просто я синхронизировал изображение с разными iPad (IPAD1 и IPAD2) через iTunes. Когда я передаю синхронизированное изображение с IPAD1 на IPAD2 через WI-Fi, мне просто нужно проверить, существует ли файл изображения в фотобиблиотеке IPAD2. В нашем случае файл изображения уже существует (поскольку мы заранее синхронизировались с обоими iPad). Поэтому мне нужно получить соответствующий URL-адрес изображения с IPAD2. Вот в чем проблема. - person adrian; 24.11.2011