【问题标题】:How to prevent images saved to photo library from being resized/scaled to full screen?如何防止保存到照片库的图像被调整大小/缩放到全屏?
【发布时间】:2012-07-13 17:13:02
【问题描述】:

这是交易,我尝试使用下面显示的两种方法将图像保存到照片库。成功保存图像并启动照片应用查看图像后,应用会自动将图像缩放/调整为全屏。

有什么办法可以防止这种情况发生吗?这很烦人,因为要查看整个图像,用户需要将图像捏出来以显示整个图像。我注意到一些更流行的相机应用程序在保存到照片库时没有这个问题。我很好奇他们用的是什么方法。

//Save to Photo Library;
ALAssetsLibrary* library = [[ALAssetsLibrary alloc] init];
//CIImage *ciImage = image.CIImage;
[library writeImageToSavedPhotosAlbum:finalImage.CGImage
                          orientation:ALAssetOrientationUp
                      completionBlock:^(NSURL *assetURL, NSError *error) {
                          NSlog(@"Done");
                      }];

Save to Photo Library;
UIImageWriteToSavedPhotosAlbum(savedPhoto,nil,nil,nil);

感谢您的帮助!

【问题讨论】:

  • 您是说他们会缩放您的图像以填满屏幕并切断侧面的位置吗?
  • 是的,但是在图像保存之后。看来我没有解释清楚。问题不在我的应用程序中。它是在图像保存后,然后启动苹果照片库应用程序“照片”。
  • 是的——我明白,只是确认一下。
  • 如果改变方向会发生什么?
  • 如果我将设备旋转为横向,整个图像会显示得很好。这只是纵向握住设备时的一个问题。这是照片应用程序自动调整大小以适应整个屏幕的方式。我不确定苹果为什么要这样做。

标签: iphone camera uiimage photos alassetslibrary


【解决方案1】:

经过一番研究,这个问题没有解决方案。照片应用会自动放大图像以填满屏幕。

感谢所有回复。

【讨论】:

    【解决方案2】:

    保存图片应该没问题。

    我认为您可以在使用图像时设置 UIView 属性 UIViewContentMode。

    typedef enum {
    UIViewContentModeScaleToFill,
    UIViewContentModeScaleAspectFit,      // contents scaled to fit with fixed aspect. remainder is transparent
    UIViewContentModeScaleAspectFill,     // contents scaled to fill with fixed aspect. some portion of content may be clipped.
    UIViewContentModeRedraw,              // redraw on bounds change (calls -setNeedsDisplay)
    UIViewContentModeCenter,              // contents remain same size. positioned adjusted.
    UIViewContentModeTop,
    UIViewContentModeBottom,
    UIViewContentModeLeft,
    UIViewContentModeRight,
    UIViewContentModeTopLeft,
    UIViewContentModeTopRight,
    UIViewContentModeBottomLeft,
    UIViewContentModeBottomRight,
    

    } UIViewContentMode;

    希望对你有帮助。

    【讨论】:

      【解决方案3】:

      如果您查看 Apple 的 FrogScroller 示例应用程序,您会发现它们最初会先加载低分辨率的图像,然后在缩放时使用大小由 setMaxMinZoomScalesForCurrentBounds 函数设置的 CATiledLayer。

      您可能想查看 WWDC 2010 的 scrollViews 视频以及 2011 年的视频以了解更多信息。乔希和伊丽莎很好地解释了发生了什么。

      【讨论】:

        【解决方案4】:

        为什么不在保存之前将图像分层到具有清晰背景的全屏图像上?

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2014-02-13
          • 1970-01-01
          • 2012-05-06
          • 2020-03-19
          • 2023-01-26
          • 2023-01-14
          • 2023-02-10
          • 1970-01-01
          相关资源
          最近更新 更多