`

UIGraphicsBeginImageContextWithOptions用法(UIView 转 UIImage)

 
阅读更多


UIView 转 UIImage 方法如下(关键是自适配分辨率):


- (UIImage*)lineImage:(UIColor *)color lineWidth:(float)width lineType:(int)type

{

    self.lineColor = color;

    lineWidth = width;

    lineType = type;

    

    //opaqueNO 不透明

    UIGraphicsBeginImageContextWithOptions(self.frame.size, NO, 1.0);

//渲染自身

    [self.layer renderInContext:UIGraphicsGetCurrentContext()];

    

    UIImage *uiImage = UIGraphicsGetImageFromCurrentImageContext();

    UIGraphicsEndImageContext();

    

//    [UIImagePNGRepresentation(uiImage) writeToFile:@"/users/test/desktop/a.png" atomically:YES]; 

    

    return uiImage;

}



UIGraphicsBeginImageContextWithOptions

Creates a bitmap-based graphics context with the specified options.

void UIGraphicsBeginImageContextWithOptions(
   CGSize size,
   BOOL opaque,
   CGFloat scale
);
Parameters
size

The size (measured in points) of the new bitmap context. This represents the size of the image returned by the UIGraphicsGetImageFromCurrentImageContext function. To get the size of the bitmap in pixels, you must multiply the width and height values by the value in the scale parameter.

opaque -- 不透明(YES)

A Boolean flag indicating whether the bitmap is opaque. If you know the bitmap is fully opaque, you can specify YES for this parameter to optimize the bitmap storage. Specifying NO means that the bitmap must include an alpha channel to handle any partially transparent pixels.

scale

The scale factor to apply to the bitmap. If you specify a value of 0.0, the scale factor is set to the scale factor of the device’s main screen.


 

Updating Your Custom Drawing Code

When you do any custom drawing in your application, most of the time you should not need to care about the resolution of the underlying screen. The native drawing technologies automatically ensure that the coordinates you specify in the logical coordinate space map correctly to pixels on the underlying screen. Sometimes, however, you might need to know what the current scale factor is in order to render your content correctly. For those situations, UIKit, Core Animation, and other system frameworks provide the help you need to do your drawing correctly.

Creating High-Resolution Bitmap Images Programmatically If you currently use the UIGraphicsBeginImageContext function to create bitmaps, you may want to adjust your code to take scale factors into account. The UIGraphicsBeginImageContext function always creates images with a scale factor of 1.0. If the underlying device has a high-resolution screen, an image created with this function might not appear as smooth when rendered. To create an image with a scale factor other than 1.0, use the UIGraphicsBeginImageContextWithOptions instead. The process for using this function is the same as for the UIGraphicsBeginImageContext function:

  1. Call UIGraphicsBeginImageContextWithOptions to create a bitmap context (with the appropriate scale factor) and push it on the graphics stack.
  2. Use UIKit or Core Graphics routines to draw the content of the image.
  3. Call UIGraphicsGetImageFromCurrentImageContext to get the bitmap’s contents.
  4. Call UIGraphicsEndImageContext to pop the context from the stack.

For example, the following code snippet creates a bitmap that is 200 x 200 pixels. (The number of pixels is determined by multiplying the size of the image by the scale factor.)

UIGraphicsBeginImageContextWithOptions(CGSizeMake(100.0,100.0), NO, 2.0);
我感觉,这里写成:
UIGraphicsBeginImageContextWithOptions(CGSizeMake(100.0,100.0), NO, 0.0); 会更合适吧
分享到:
评论

相关推荐

    UIView转化为ImageDemo

    在iOS开发中,经常需要将UIView转换为UIImage,以便于保存、分享或者上传到服务器。这个"UIView转化为ImageDemo"项目就是一个很好的实例,演示了如何实现这个功能。在这个过程中,我们将深入探讨相关的知识点。 ...

    UIView 保存为图片

    这个方法可以将UIView的内容渲染到一个CGContext中,然后通过这个Context创建UIImage对象。 下面是一个基本的代码示例,展示如何将UIView转换为UIImage: ```swift func viewToImage(view: UIView) -> UIImage? { ...

    UIView-UIImageEffects:从 UIView 创建模糊图像

    这个库提供了便捷的方法,帮助开发者轻松地将模糊效果应用到UI元素上,尤其是`UIImage`对象。模糊效果在现代移动应用设计中广泛使用,它可以提升界面的视觉吸引力,并且在某些场景下,比如显示背景或提示信息时,...

    iOS中一行代码实现 UIView 镂空效果

    我们使用`UIGraphicsBeginImageContextWithOptions`创建一个新的图形上下文,然后通过`renderInContext:`方法将maskView的layer渲染到这个上下文中,得到一个UIImage对象。 2. 创建一个只包含alpha通道的...

    IOS应用源码——相机+画板.zip

    我们可以使用UIGraphicsGetCurrentContext()获取当前图形上下文,然后调用UIGraphicsBeginImageContextWithOptions和UIGraphicsGetImageFromCurrentImageContext方法生成UIImage对象。最后,使用...

    ios-ios 本地图片合成,网络图片合成,视图转成图片,截屏功能实现.zip

    当需要保存用户界面的状态或者制作截图分享时,可以使用`UIGraphicsBeginImageContextWithOptions`和`UIView.drawHierarchy(in:afterScreenUpdates:)`方法。这个项目可能包含了一个视图转图片的工具函数,能够捕捉到...

    ios-界面生成图片.zip

    然后,我们可以使用`-[UIView drawViewHierarchyInRect:afterScreenUpdates:]`方法,将指定视图及其子视图的内容绘制到当前的图形上下文中。这个方法会遍历视图层次结构,对每个视图调用`drawRect:`方法,从而将它们...

    ColorPanel:在UIView的某一点获取颜色

    本篇将详细介绍如何使用Objective-C语言实现这个功能,主要涉及的知识点包括`UIView`的图形上下文(Graphics Context)、颜色空间(Color Space)以及图像渲染(Image Rendering)。 首先,`UIView`是iOS中的基础...

    getScreenViewCode

    如果需要截图特定的视图,而不是整个屏幕,可以使用`UIView`的`snapshotView(afterScreenUpdates:)`方法。这个方法会返回一个包含视图当前状态的静态视图,可以进一步处理这个视图以生成截图。 ```swift let ...

    ios屏幕录制

    这可以通过调用`UIGraphicsBeginImageContextWithOptions`开始一个新的图形上下文,然后调用`UIApplication.shared.keyWindow?.snapshotView(afterScreenUpdates:)`获取屏幕的当前视图,最后将这个视图转换为UIImage...

    Swift-View截图

    你可以使用`UIGraphicsBeginImageContextWithOptions`函数创建一个新的图形上下文,然后调用`UIApplication.shared.keyWindow?.layer.render(in:)`方法将屏幕内容渲染到这个上下文。最后,通过`...

    IOS应用源码之图片截图 .rar

    如果你只想截图某个特定的`UIView`,可以使用`drawViewHierarchyInRect(_:afterScreenUpdates:)`方法。这个方法会绘制视图及其所有子视图到指定的矩形区域。 ```swift func screenshotOfView(view: UIView) -> ...

    iOS中大尺寸图片的旋转与缩放实例详解

    在iOS中,UIImage的缩放通常涉及调整图像的显示大小,可以使用`CGImageCreateWithImageInRect`或`UIGraphicsBeginImageContextWithOptions`等方法。例如,为了缩放一个UIImage,我们可以创建一个新的图形上下文,其...

    iOS 截屏功能

    // 使用方法 if let image = myView.screenshot() { UIImageWriteToSavedPhotosAlbum(image, nil, nil, nil) } ``` 这段代码定义了一个`UIView`的扩展,添加了`screenshot`方法。该方法首先创建一个与视图大小相同...

    ios-根据父视图生成一张图片.zip

    首先,我们可以使用`UIGraphicsBeginImageContextWithOptions`函数来创建一个新的图形上下文,然后调用`-[UIView drawViewHierarchyInRect:afterScreenUpdates:]`方法将视图的内容绘制到这个上下文中。这个方法会...

    iOS 对view进行截图的示例代码

    这个方法基于`UIGraphicsBeginImageContextWithOptions`来创建一个图形上下文,并使用`renderInContext:`方法将`view.layer`渲染到当前图形上下文中。这种方法适用于大部分情况,但存在一个问题:在某些低版本的系统...

    IOS截屏保存到相册

    然后,我们可以使用`PHPhotoLibrary`的`requestAuthorization`方法请求权限,以及`PHAssetChangeRequest`来创建新图片的请求: ```swift func saveImageToAlbum(_ image: UIImage) { PHPhotoLibrary....

    给图片拓展下属性,加个边框、搞个渐变.zip

    为了方便使用,你可以创建一个UIImage的扩展,提供添加边框和渐变的便捷方法。这将使代码更整洁,易于维护。 7. **SwiftyImage项目**: SwiftyImage-master可能是对UIImage的进一步封装,提供了更加直观和易用的...

    ios涂鸦生成图片

    获得UIImage对象后,我们可以使用UIImage的`writeToSavedPhotosAlbum:`方法将图片保存至用户的照片库,或者使用`JPEGRepresentation`或`PNGRepresentation`方法将图片数据导出为JPEG或PNG格式的文件。 8. **性能...

Global site tag (gtag.js) - Google Analytics