调整照片大小并为photostreams创建相同大小的方形缩略图的最佳方法是什么?Flickr和Facebook做到了这一点,我们想要效仿这一功能。
下面是一个例子:http://www.flickr.com/photos/alphageek/233472093/
如果您查看右侧(中间页面)的照片流,所有缩略图的大小都是相同的,即使原始图像的大小不同,最重要的是,缩略图显示为智能裁剪。
Flickr能够在主焦点周围自动裁剪和调整图像大小,而不是简单地将图像大小调整为缩略图大小(例如,通过设置图像宽度和高度),这将导致图像看起来被挤压并失去图像的焦点。
发布于 2011-02-01 20:25:20
对于这样的问题,我总是使用:http://www.imagemagick.org/script/convert.php。
Imagemagick提供了许多用于处理图像的函数。我在一个循环中获取图像,并创建一个大版本和一个缩略图版本。
发布于 2011-02-02 01:09:51
他们正在调整作物的大小。
如果你使用imagemagick来转换,它将是#选项,如"40x40#“或"90x90#”,照片将被调整大小,然后裁剪以保持纵横比,同时在缩略图中获得尽可能多的内容。
从编程上讲,它可能是这样的:
1)调整图像大小,使短边与指定的一致。2)对中间进行裁剪,因此长边现在也是指定的。
发布于 2015-05-15 12:36:08
是。首先,你需要得到一个新的尺寸,保持宽高比不变:
CGFloat horizontalRatio = newSize.width/oldSize.width;
CGFloat verticalRatio = newSize.height/oldSize.height;
CGFloat ratio = MAX(horizontalRatio, verticalRatio);
CGSize newSize = CGSizeMake(oldSize.width *ratio, newSize.height*ratio)
然后你需要以新的大小重新绘制你的图像(self是你的图像):
UIGraphicsBeginImageContextWithOptions(newSize, YES, 0);
[self drawInRect:CGRectMake(0, 0, newSize.width, newSize.height)];
UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
然后裁剪到所需的大小:
CGRect cropRect = CGRectMake ((newImage.size.width - width) / 2, (newImage.size.height - height) / 2, width, height)
UIGraphicsBeginImageContextWithOptions(cropRect.size, YES, 0);
CGContextRef context = UIGraphicsGetCurrentContext();
CGRect drawRect = CGRectMake(-cropRect.origin.x, -cropRect.origin.y, self.size.width, self.size.height);
CGContextClipToRect(context, CGRectMake(0, 0, cropRect.size.width, cropRect.size.height));
[self drawInRect:drawRect];
UIImage* croppedImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return croppedImage;
https://stackoverflow.com/questions/4867517
复制相似问题