Низкая ясность с миниатюрой ALAsset - PullRequest
1 голос
/ 02 декабря 2011

Я связываю изображения из библиотеки фотографий с моим табличным представлением с помощью библиотеки ALAsset. Поэтому всякий раз, когда я связываю миниатюрное изображение ALAsset как изображение ячейки TableView, возникает проблема с изображением Clarity.It Показывается как изображение с низкой четкостью. Я создал полное разрешение изображения из AlAsset и написал метод генерации миниатюр, я установил результирующее изображение как изображение в виде таблицы. После выполнения описанного выше процесса я получил миниатюру изображения в полном разрешении в табличном представлении. Но проблема заключалась в быстродействии с процессом привязки изображений в режиме просмотра первой таблицы (я использовал кеш для привязки изображения после привязки в первый раз. Так что производительность увеличится после первого раза).

Итак, могу ли я узнать, как я могу получить полноразмерное изображение для библиотеки фотографий из ALAsset?

Я написал следующий код в MyTableView CellForRowIndexPath:


UIImageView *importMediaSaveImage=[[[UIImageView alloc] init] autorelease];
 importMediaSaveImage.frame=CGRectMake(0, 0, 200,135 );

ALAssetsLibraryAssetForURLResultBlock resultblock = ^(ALAsset *myasset)
  {

   CGImageRef iref = [myasset thumbnail];


       if (iref) {

             importMediaSaveImage.image = [UIImage imageWithCGImage:iref];

             } 
    etc...

Я попробовал следующий метод, который занимает много времени


 UIImageView *importMediaSaveImage=[[[UIImageView alloc] init] autorelease];
 importMediaSaveImage.frame=CGRectMake(0, 0, 200,135 );

ALAssetsLibraryAssetForURLResultBlock resultblock = ^(ALAsset *myasset)
  {

    ALAssetRepresentation *rep = [myasset defaultRepresentation];
       CGImageRef iref = [rep fullResolutionImage];
       UIImage *images;
       if (iref) {

        images = [UIImage imageWithCGImage:iref];  


       }  

       NSData *data = [self photolibImageThumbNailData:images];

       importMediaSaveImage.image = [UIImage imageWithData:data];

  etc....

photolibImageThumbNailData


-(NSData *)photolibImageThumbNailData:(UIImage *)image{
     // begin an image context that will essentially "hold" our new image
     UIGraphicsBeginImageContext(CGSizeMake(200.0,135.0));

     // now redraw our image in a smaller rectangle.
     [image drawInRect:CGRectMake(0.0, 0.0, 200.0, 135.0)];


     // make a "copy" of the image from the current context
     UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
     UIGraphicsEndImageContext();



     // now grab the PNG representation of our image
     NSData *thumbData = UIImagePNGRepresentation(newImage);

     return thumbData;
}

Спасибо.

Ответы [ 3 ]

0 голосов
/ 24 марта 2015

Вам также следует попробовать [rep fullScreenImage] для более качественного просмотра таблицы, но с качеством изображения лучше, чем в миниатюре.

0 голосов
/ 20 октября 2015

Вы можете использовать

CGImageRef iref = [myasset aspectRatioThumbnail];

и ваш эскиз будет выглядеть намного лучше!

0 голосов
/ 02 декабря 2011

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

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