Как легко изменить размер/оптимизировать размера изображения с iOS?

В вашем сервисе заголовков, возможно, рассмотрите возможность использования Subject из rxjs, а затем создайте метод, который обновляет значение этого Субъекта в сервисе ex

// header.service.ts
selectedRecipe: Subject<any> = new Subject();


chooseRecipe(recipe: string) {
    this.selectedRecipe.next(recipe);
}
// header.component.ts

yourClickMethod(recipe: string) {
   this.heservice.chooseRecipe(recipe);
}

your app component logic would stay the same, the subscribe will work the same way.

111
задан Cœur 24 January 2019 в 02:49
поделиться

3 ответа

Несколько предложений обеспечиваются как ответы на этот вопрос . Я предложил технику, описанную в это сообщение с соответствующими нормами:

+ (UIImage*)imageWithImage:(UIImage*)image 
               scaledToSize:(CGSize)newSize;
{
   UIGraphicsBeginImageContext( newSize );
   [image drawInRect:CGRectMake(0,0,newSize.width,newSize.height)];
   UIImage* newImage = UIGraphicsGetImageFromCurrentImageContext();
   UIGraphicsEndImageContext();

   return newImage;
}

До устройства хранения данных изображения, самый быстрый формат изображения для использования с iPhone является PNG, потому что это имеет оптимизацию для того формата. Однако, если Вы хотите сохранить эти изображения как JPEGs, можно взять UIImage и сделать следующее:

NSData *dataForJPEGFile = UIImageJPEGRepresentation(theImage, 0.6);

Это создает экземпляр NSData, содержащий необработанные байты для изображения JPEG при 60%-й качественной установке. Содержание которого экземпляр NSData может тогда писаться в диск или кэшироваться в памяти.

243
ответ дан Community 24 November 2019 в 02:56
поделиться

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

7
ответ дан Rog 24 November 2019 в 02:56
поделиться

Самое легкое и большая часть простого способа изменить размеры Ваших изображений были бы этим

float actualHeight = image.size.height;
float actualWidth = image.size.width;
float imgRatio = actualWidth/actualHeight;
float maxRatio = 320.0/480.0;

if(imgRatio!=maxRatio){
    if(imgRatio < maxRatio){
        imgRatio = 480.0 / actualHeight;
        actualWidth = imgRatio * actualWidth;
        actualHeight = 480.0;
    }
    else{
        imgRatio = 320.0 / actualWidth;
        actualHeight = imgRatio * actualHeight;
        actualWidth = 320.0;
    }
}
CGRect rect = CGRectMake(0.0, 0.0, actualWidth, actualHeight);
UIGraphicsBeginImageContext(rect.size);
[image drawInRect:rect];
UIImage *img = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
65
ответ дан lostInTransit 24 November 2019 в 02:56
поделиться