Coder Social home page Coder Social logo

Comments (10)

wangbiye avatar wangbiye commented on August 17, 2024 1

@sreeji44 I just change a place, which is the relevant code changes after me, but it is Objective-C.

- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
    QBAssetCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"AssetCell" forIndexPath:indexPath];
    cell.tag = indexPath.item;
    cell.showsOverlayViewWhenSelected = self.imagePickerController.allowsMultipleSelection;

    // Image
    PHAsset *asset = self.fetchResult[indexPath.item];
    CGSize itemSize = [(UICollectionViewFlowLayout *)collectionView.collectionViewLayout itemSize];

    /*
    change here
    */
    UIWindow *window = [UIApplication sharedApplication].keyWindow;
    CGFloat fixValue;
    if (self.traitCollection.displayScale != 0) {
        fixValue = self.traitCollection.displayScale;
    } else {
        fixValue = window.traitCollection.displayScale;
    }

    CGSize targetSize = CGSizeScale(itemSize, fixValue);
    [self.imageManager requestImageForAsset:asset
                                 targetSize:targetSize
                                contentMode:PHImageContentModeAspectFill
                                    options:nil
                              resultHandler:^(UIImage *result, NSDictionary *info) {
                                  if (cell.tag == indexPath.item) {
                                      cell.imageView.image = result;
                                  }
                              }];

    // Video indicator
    if (asset.mediaType == PHAssetMediaTypeVideo) {
        cell.videoIndicatorView.hidden = NO;

        NSInteger minutes = (NSInteger)(asset.duration / 60.0);
        NSInteger seconds = (NSInteger)ceil(asset.duration - 60.0 * (double)minutes);
        cell.videoIndicatorView.timeLabel.text = [NSString stringWithFormat:@"%02ld:%02ld", (long)minutes, (long)seconds];

        if (asset.mediaSubtypes & PHAssetMediaSubtypeVideoHighFrameRate) {
            cell.videoIndicatorView.videoIcon.hidden = YES;
            cell.videoIndicatorView.slomoIcon.hidden = NO;
        }
        else {
            cell.videoIndicatorView.videoIcon.hidden = NO;
            cell.videoIndicatorView.slomoIcon.hidden = YES;
        }
    } else {
        cell.videoIndicatorView.hidden = YES;
    }

    // Selection state
    if ([self.imagePickerController.selectedAssets containsObject:asset]) {
        [cell setSelected:YES];
        [collectionView selectItemAtIndexPath:indexPath animated:NO scrollPosition:UICollectionViewScrollPositionNone];
    }

    return cell;
}

from qbimagepicker.

wangbiye avatar wangbiye commented on August 17, 2024 1

I'm sorry, my English is bad, I cannot quickly understand what you mean. @sreeji44

from qbimagepicker.

wangbiye avatar wangbiye commented on August 17, 2024

QBAssetsViewController.m ---> line 451 ---> When first run self.traitCollection no value

My code:

UIWindow *window = [UIApplication sharedApplication].windows.firstObject;
    CGFloat fixValue;
    if (self.traitCollection.displayScale != 0) {
        fixValue = self.traitCollection.displayScale;
    } else {
        fixValue = window.traitCollection.displayScale;
    }

    CGSize targetSize = CGSizeScale(itemSize, fixValue);

from qbimagepicker.

sreeji44 avatar sreeji44 commented on August 17, 2024

@wangbiye When i add this lines i solve the problem ?.. because i to have the same problem.... Can you help me..... i am doing in swift...

from qbimagepicker.

sreeji44 avatar sreeji44 commented on August 17, 2024

@wangbiye actually i am using the objective c version and converted the code thats all... so QBassetviewcontroller.m page i want to change it right... ok thankz a lot.....

from qbimagepicker.

sreeji44 avatar sreeji44 commented on August 17, 2024

@wangbiye thankz its works

from qbimagepicker.

sreeji44 avatar sreeji44 commented on August 17, 2024

@wangbiye its ok.. Your code work for me. :)

from qbimagepicker.

jankarrajpara avatar jankarrajpara commented on August 17, 2024

CGSize targetSize = CGSizeScale(itemSize, fixValue);

This is showing error,

from qbimagepicker.

mrharsh2804 avatar mrharsh2804 commented on August 17, 2024

It worked for me when I changed this:

PHImageRequestOptions* options = [[PHImageRequestOptions alloc] init];
options.synchronous = YES;
options.networkAccessAllowed = YES;
options.deliveryMode = PHImageRequestOptionsDeliveryModeHighQualityFormat;

It was options.deliveryMode = PHImageRequestOptionsDeliveryModeFastFormat before. It used to work even without this though.

from qbimagepicker.

mrharsh2804 avatar mrharsh2804 commented on August 17, 2024

This might be super late but can help people in future.
Adding a multiplier in QBAssetViewController is the solution that worked for me at line 450.
CGSize targetSize = CGSizeScale(itemSize, self.traitCollection.displayScale*4); //self.traitCollection.displayScale = 2. This is a default set in iOS 13.2 (or somewhere around that)

multiplying it by 4 increases the resolution and you see clearer images.

from qbimagepicker.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.