我期待缩减一个UIImage在iOS.
我已经看到了下面的其他问题以及他们如何按尺寸缩小图像的方法.
调整图像大小Objective-C
如何在iphone中以objective-c编程调整图像
大小调整UIImage大小的最简单方法?
这些问题都是基于将图像重新调整为特定大小.在我的情况下,我希望根据最大尺寸重新调整/缩小图像.
例如,我想将最大NSData大小设置为500 KB.我知道我可以像这样得到图像的大小://检查返回图像的大小
NSData *imageData = UIImageJPEGRepresentation(image, 0.5);
// Log out the image size
NSLog(@"%lu KB",(imageData.length/1024));
Run Code Online (Sandbox Code Playgroud)
我想做的是这里的某种形式的循环.如果尺寸大于我设置的最大尺寸,我想稍微缩小图像,然后检查尺寸.如果尺寸仍然太大,则再次缩小,然后再次检查,直到它低于最大设定尺寸.
我不确定最好的办法是什么.理想情况下,我不希望始终将图像缩小到特定大小,但每次只能略微缩小图像.这样我可以拥有最大的(大小w/h)图像本身和最大尺寸(字节).如果我一次只略微缩小,那么最好的方法是什么呢?
编辑
要确认,我希望重新调整实际图像的大小,但重新调整图像的大小,使其小于最大NSData长度.例如: -
检查NSData长度
-If高于我想要将UIImage传递给方法
的最大值 - 然后
循环通过此方法每次稍微调整实际图像大小
-Until它在最大NSData长度以下,然后返回图像?
我经历了逐步发现iOS中性能最佳的图像大小调整解决方案的常规过程,最终我得到了ImageIO.
以下效果很好
if let currentImage = CGImageSourceCreateWithData(imageData, nil)
//...some code that extracts the existing size, and based on my maximum expected horizontal size..calculates a new horizontal/vertical maximum size..
let options: CFDictionary = [kCGImageSourceThumbnailMaxPixelSize as NSString : maximumImageWidthOrHeight,
kCGImageSourceCreateThumbnailFromImageAlways as NSString : true]
CGImageSourceCreateThumbnailAtIndex(image, options)
Run Code Online (Sandbox Code Playgroud)
但仅适用于下采样.
如果我的图像是全高清即.1920 x 1080,它被调整大小(保持纵横比),使其适合320 px horizontaly,因为这是我设置为最大水平尺寸.
但是,如果我传入一个16像素×9像素的图像..一个非常小的图像(显然具有16:9的宽高比).此图像未调整大小.
我想将它调整为320 x 180像素.
是否有一个选项组合/一个错过的方法调用/任何会在imageIO框架中给我的东西?
我的iPhone应用程序中有一个UIButton.我将其大小设置为100x100.
我有一个400x200的图像,我希望在按钮中显示.
按钮STILL需要保持在100x100 ...我希望图像缩小以适应...但保持正确的宽高比.
我认为这就是"Aspect Fit"的用途.
我是否使用setImage或setBackgroundImage包含我的图像?
我是否为按钮设置了AspectFit?还是形象?还是背景图片?
(我需要较小的图像来增加大小.虽然较大的图像应该是DESCREASE的大小.始终保持按钮为100x100.)
我尝试了以上所有的无数组合......而我似乎无法让所有东西同时工作:
我看到很多应用程序,有如此多的全功能图像按钮...我无法相信我无法弄清楚这个非常简单,非常常见的事情.
啊.
如何在缓存之前调整来自URL的图像的大小,缩放和裁剪.我尝试使用以下代码实现此目的.
[cell.profilePicture setImageWithURL:[NSURL URLWithString:[rowData objectForKey:@"pictureUrl"]] placeholderImage:nil];
cell.profilePicture.image = [self imageByScalingAndCroppingForSize:CGSizeMake(cell.profilePicture.frame.size.width, cell.profilePicture.frame.size.height) image:cell.profilePicture.image];
Run Code Online (Sandbox Code Playgroud)
这产生了一个奇怪的结果.首先,它显示未调整大小/缩放/裁剪的版本.但是,当我向下滚动然后返回时,它会显示调整大小/缩放/裁剪的版本.我知道这段代码首先缓存图像并调整大小/缩放/裁剪它们.但是,我无法想出更好的解决方案.我认为应该有一些能够下载图像的东西,以便独立调整大小/缩放/裁剪和缓存.有任何想法吗?
谢谢.
我想制作自定义UISlider,就像这样
| O ---------- | - > | ----- O ------ | - > |------------〇|
的thumbImage将是小的在最小值处,它将滑块值增加期间增加的大小,否则会降低.
谁知道怎么做?
当用户按下按钮然后设置宽度动画时,我试图给我的UIButton一个新的背景图像.问题是按钮没有缩放图像(我只使用视网膜图像).
点击之前:

点击后:

以及使事情发生的代码:
UIImage *buttonProfileDefault = [[UIImage imageNamed:@"Profile_Button_Default"] resizableImageWithCapInsets:UIEdgeInsetsMake(3, 3, 3, 3)];
[self.profileButton setBackgroundImage:buttonProfileDefault forState:UIControlStateNormal];
[self.profileButton removeConstraint:self.profileButtonConstraint];
// Animate
CGRect originalFrame = self.profileButton.frame;
originalFrame.size.width = 40;
[UIView animateWithDuration:0.2f
animations:^{
self.profileButton.frame = originalFrame;
}
completion:^(BOOL finished) {
}];
Run Code Online (Sandbox Code Playgroud) 如何在文件夹中保存照片时调整图像大小???
这就是我在iphone中保存图像的方法.
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *imageFile = nil;
NSString *name_png = [NSString stringWithFormat:@"%@.png",photoName];
imageFile = [documentsDirectory stringByAppendingPathComponent:name_png];
[UIImagePNGRepresentation(self.theImageView.image) writeToFile:imageFile atomically:YES];
Run Code Online (Sandbox Code Playgroud)
如何将其从原始大小调整为200 X 200像素?
或者我可以加载图像文件而不是调整大小吗?
实际上,我创建了一个包含许多图像的封面流程,图像来自相机.
我可以找到一个封面流样本,但是当我加载图像时,它充满了iphone屏幕.
不小的封面图片.
我需要帮助调整UIImage的大小.
例如:我在UICollection视图中显示很多图像,但这些图像的大小为2到4 MB.我需要压缩或调整这些图像的大小.
我发现了这个:如何在上传到服务器之前压缩/调整iPhone OS SDK上的图像大小?但我不明白如何实现它.
我已经放置了一个GoogleMap包含的标记Image.但是图像的大小要大得多.那么我怎样才能减小标记的大小.我试过这个:
marker.icon = self.image(marker.icon, scaledToSize: CGSize(width: 3.0, height: 3.0))
Run Code Online (Sandbox Code Playgroud) 假设我想找出图像的大小,所以如果用户试图在我的iPad应用程序中加载10,000x10,000像素的图像,我可以用对话框显示它们而不是崩溃.如果我这样做[UIImage imageNamed:]或[UIImage imageWithContentsOfFile:]那将立即将我的潜在大图像加载到内存中.
如果我使用Core Image,请这样说:
CIImage *ciImage = [CIImage imageWithContentsOfURL:[NSURL fileURLWithPath:imgPath]];
Run Code Online (Sandbox Code Playgroud)
然后问我的新CIImage尺寸:
CGSize imgSize = ciImage.extent.size;
Run Code Online (Sandbox Code Playgroud)
是否会将整个图像加载到内存中告诉我这个,或者只是查看文件的元数据以发现图像的大小?
ios ×7
objective-c ×6
iphone ×4
uiimage ×3
swift ×2
aspect-ratio ×1
core-image ×1
google-maps ×1
image ×1
ios5 ×1
ios6 ×1
nsdata ×1
scale ×1
sdwebimage ×1
storyboard ×1
swift2 ×1
uibutton ×1
uiimageview ×1
uislider ×1
xcode ×1