【问题标题】:Resize photos as thumbnail squares like Flickr and Facebook photostreams?将照片调整为像 Flickr 和 Facebook 照片流这样的缩略图方块?
【发布时间】:2011-06-19 13:05:45
【问题描述】:

调整照片大小并为照片流创建相同大小的方形缩略图的最佳方法是什么? Flickr 和 Facebook 就是这样做的,我们希望模仿这个功能。

这是一个例子:http://www.flickr.com/photos/alphageek/233472093/

如果您在右侧(页面中间)查看照片流,即使原始图像大小不同,所有缩略图的大小都相同,最重要的是,缩略图会智能裁剪。

Flickr 能够自动裁剪和调整主要焦点周围的图像大小,而不是简单地将图像大小调整为缩略图大小(例如,通过设置图像宽度和高度),这会导致图像看起来被压扁并丢失图像的焦点。

【问题讨论】:

  • 正如我在链接上看到的,您发送的所有图像似乎都被裁剪到中间,并且可能有点重新采样 - 所以您可以看到更多图片,但它并不那么烦人
  • 谢谢,谢尔盖。他们如何以编程方式做到这一点?

标签: facebook thumbnails photo flickr crop


【解决方案1】:

他们正在调整大小的作物。

如果您使用 imagemagick 进行转换,它将是 # 选项,如“40x40#”或“90x90#”,其中照片将被调整大小,然后裁剪以保持纵横比,同时尽可能多地显示在缩略图中。

以编程方式可能是这样的:

1) 调整图像大小,使短边符合指定。 2) 裁剪中间,所以长边现在也符合规定。

【讨论】:

  • 谢谢!有没有办法在不下载 imagemagick 的情况下做到这一点?
【解决方案2】:

是的。首先,您需要获得一个保持纵横比不变的新尺寸:

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)

然后你需要用新的尺寸重新绘制你的图像(自己就是你的图像):

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; 

【讨论】:

    【解决方案3】:

    对于此类问题,我总是使用:http://www.imagemagick.org/script/convert.php

    Imagemagick 提供了很多处理图像的功能。 我循环拍摄图像并创建一个大版本和一个缩略图版本。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-02-13
      • 2011-09-06
      • 2011-05-28
      • 1970-01-01
      • 2014-11-12
      • 2012-05-24
      • 1970-01-01
      • 2017-01-27
      相关资源
      最近更新 更多