gpt4 book ai didi

IOS/objective-C : Reduce file size of pngs for thumbnails

转载 作者:行者123 更新时间:2023-11-28 21:35:02 25 4
gpt4 key购买 nike

我允许用户拍摄个人资料照片,然后我需要将其上传到服务器。 iPhone 照片的文件很大……比个人资料照片所需的大得多,它们占用手机上的大量空间,上传到服务器也需要很长时间。我发现有时如果 Internet 连接较弱,服务器会在上传过程中途超时。

我在一个类别中有代码来减小图像大小的高度和宽度,但它似乎并没有减小实际文件的大小。

任何人都可以建议一种简单的方法来做到这一点——最好不要使用繁重的库。另外,我想避免转换为 jpg,我知道它允许有损压缩。

谢谢。

编辑:

问题也可能与我在下面创建缩略图后如何处理缩略图有关,因此我也包括该代码。

这是我用来减小高度和宽度的代码,但它似乎并没有减小字节大小。

@implementation UIImage (Thumbnail)
-(UIImage *) createThumbnailToFillSize:(CGSize)size
{
CGSize mainImageSize = size;
UIImage *thumb;

CGFloat widthScaler = size.width / mainImageSize.width;
CGFloat heightScaler = size.height / mainImageSize.height;

CGSize repositionedMainImageSize = mainImageSize;

CGFloat scaleFactor;
// Determine if we should shrink based on width or hight
if(widthScaler > heightScaler)
{
// calculate based on width scaler
scaleFactor = widthScaler;
repositionedMainImageSize.height = ceil(size.height / scaleFactor);
}
else {
// calculate based on height scaler
scaleFactor = heightScaler;
repositionedMainImageSize.width = ceil(size.width / heightScaler);
}

UIGraphicsBeginImageContext(size);

CGFloat xInc = ((repositionedMainImageSize.width-mainImageSize.width) / 2.f) *scaleFactor;
CGFloat yInc = ((repositionedMainImageSize.height-mainImageSize.height) / 2.f) *scaleFactor;

[self drawInRect:CGRectMake(xInc, yInc, mainImageSize.width * scaleFactor, mainImageSize.height * scaleFactor)];
thumb = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();


return thumb;
}



//Display image in viewdidload by calling above method:

UIImage *chosenImage = [self loadImageNamed:picname];
CGFloat side = 150;
side *=[[UIScreen mainScreen] scale];
UIImage *thumbnail = [chosenImage createThumbnailToFillSize:CGSizeMake(side, side)];
self.imageView.image = thumbnail;


- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {

UIImage *chosenImage = info[UIImagePickerControllerEditedImage];
self.didChange=YES;
self.imageWasPicked = YES;//this is a dupe but used for updateButton
self.changedPic=YES;
[self updateSaveButton];

self.imageView.image = chosenImage;
//Should I be putting code to make thumbnail here instead of in display?

[picker dismissViewControllerAnimated:YES completion:NULL];

}

最佳答案

如果您使用 UIImagePickerController 是为了让用户选择图片,请确保您已设置

theImagePickerController.allowsEditing = YES;

这应该已经将最终图像的大小减小了 10-15 倍。

如果接收到的图片还是太大,那么here您可以找到一些调整图像大小的好例子。

关于IOS/objective-C : Reduce file size of pngs for thumbnails,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34226808/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com