ios - 如何调整图像大小并避免其模糊?
<p><p>我目前正在使用不模糊的代码,但它只是剪掉了一部分,如果我尝试在线使用不同的代码,它会剪掉一部分并且它也会变得模糊。我需要做什么,图片是 512x512 试图将其缩小到 100x100,它是 jpg。</p>
<p>这是我现在使用的代码:</p>
<pre><code>//setting up each cell
-(UICollectionViewCell *)collectionView:(UICollectionView *)collectionView
cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
CollectionGridCell *myCell = [collectionView
dequeueReusableCellWithReuseIdentifier:@"GridCell"
forIndexPath:indexPath];
long row = ;
NSURL *baseUrl = ;
NSString *imageItemName = ;
NSURL *url = ;
// NSURL *url = /* prepare a url... see note below */
[myCell.homeImage setImageWithURL:url
placeholderImage:
completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType) {
// inspect cacheType here to make sure it's cached as you want it
myCell.homeImage.image = ;
}];
return myCell;
}
- (UIImage *)resizeImage:(UIImage*)image newSize:(CGSize)newSize {
CGRect newRect = CGRectIntegral(CGRectMake(0, 0, newSize.width, newSize.height));
CGImageRef imageRef = image.CGImage;
UIGraphicsBeginImageContextWithOptions(newSize, NO, 0);
CGContextRef context = UIGraphicsGetCurrentContext();
// Set the quality level to use when rescaling
CGContextSetInterpolationQuality(context, kCGInterpolationHigh);
CGAffineTransform flipVertical = CGAffineTransformMake(1, 0, 0, -1, 0, newSize.height);
CGContextConcatCTM(context, flipVertical);
// Draw into the context; this scales the image
CGContextDrawImage(context, newRect, imageRef);
// Get the resized image from the context and a UIImage
CGImageRef newImageRef = CGBitmapContextCreateImage(context);
UIImage *newImage = ;
CGImageRelease(newImageRef);
UIGraphicsEndImageContext();
return newImage;
}
</code></pre>
<p>更新:到目前为止,我尝试过的每一种方法,甚至是下面的方法,都会导致中间出现裁剪。我是否必须在我的代码中指定其他内容,是否有什么东西调用它来裁剪中间?</p>
<p>这是我的网格单元 .h 文件:</p>
<pre><code>#import <UIKit/UIKit.h>
@interface CollectionGridCell : UICollectionViewCell
@property (weak, nonatomic) IBOutlet UIImageView *homeImage;
@end
</code></pre>
<p>这是我的网格单元 .m 文件:</p>
<pre><code>#import "CollectionGridCell.h"
@implementation CollectionGridCell
- (id)initWithFrame:(CGRect)frame
{
self = ;
if (self) {
// Initialization code
}
return self;
}
/*
// Only override drawRect: if you perform custom drawing.
// An empty implementation adversely affects performance during animation.
- (void)drawRect:(CGRect)rect
{
// Drawing code
}
*/
@end
</code></pre></p>
<br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
<p><p>无需重新调整图像大小。只需将以下属性设置为您的 ImageView 。</p>
<pre><code> [myCell.homeImage setImageWithURL:url
placeholderImage:
completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType) {
// inspect cacheType here to make sure it's cached as you want it
myCell.homeImage.image = image;
myCell.homeImage.contentMode = UIViewContentModeScaleAspectFit;
}];
</code></pre></p>
<p style="font-size: 20px;">关于ios - 如何调整图像大小并避免其模糊?,我们在Stack Overflow上找到一个类似的问题:
<a href="https://stackoverflow.com/questions/23333498/" rel="noreferrer noopener nofollow" style="color: red;">
https://stackoverflow.com/questions/23333498/
</a>
</p>
页:
[1]