• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

IOS 如何根据实际图像比例调整图像大小并给出自定义大小?

[复制链接]
菜鸟教程小白 发表于 2022-12-13 16:11:39 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

使用 custom size 调整 UIImage 的大小,方法是检查实际图像比例以减小图像大小。我已经尝试过这个 UIImageJPEGRepresentation(Image, 0.8); 但是这个问题是图像质量正在下降。任何帮助将非常感激。谢谢



Best Answer-推荐答案


UIImage 传递给下面的方法,该方法使用自定义高度/宽度调整图像大小,您还可以提供图像的压缩值以减小图像大小并在调整大小之前和之后检查图像大小。

这里是示例方法-

-(UIImage *)resizeImageUIImage *)image
{

    NSInteger imageActualSize = UIImageJPEGRepresentation(image,1).length;

    NSLog(@"size of IMAGE before resizing: %@ ", [NSByteCountFormatter stringFromByteCount:imageActualSize countStyle:NSByteCountFormatterCountStyleFile]);

    float actualHeight = image.size.height;
    float actualWidth = image.size.width;
    float maxHeight = 400.0; // your custom  height
    float maxWidth = 350; // your custom  width
    float imgRatio = actualWidth/actualHeight;
    float maxRatio = maxWidth/maxHeight;
    float compressionQuality = 0.5;//50 percent compression

    if (actualHeight > maxHeight || actualWidth > maxWidth)
    {
        if(imgRatio < maxRatio)
        {
            //adjust width according to maxHeight
            imgRatio = maxHeight / actualHeight;
            actualWidth = imgRatio * actualWidth;
            actualHeight = maxHeight;
        }
        else if(imgRatio > maxRatio)
        {
            //adjust height according to maxWidth
            imgRatio = maxWidth / actualWidth;
            actualHeight = imgRatio * actualHeight;
            actualWidth = maxWidth;
        }
        else
        {
            actualHeight = maxHeight;
            actualWidth = maxWidth;
        }
    }

    CGRect rect = CGRectMake(0.0, 0.0, actualWidth, actualHeight);
    UIGraphicsBeginImageContext(rect.size);
    [image drawInRect:rect];
    UIImage *img = UIGraphicsGetImageFromCurrentImageContext();
    NSData *imageData = UIImageJPEGRepresentation(img, compressionQuality);
    UIGraphicsEndImageContext();

    NSInteger imageReduceSize = imageData.length;

    NSLog(@"size of IMAGE after resizing: %@ ",[NSByteCountFormatter stringFromByteCount:imageReduceSize countStyle:NSByteCountFormatterCountStyleFile]);

    return [UIImage imageWithData:imageData];

}

这会对你有所帮助..

关于IOS 如何根据实际图像比例调整图像大小并给出自定义大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36998350/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap