• Main.storyboard


    Main.storyboard

    <?xml version="1.0" encoding="UTF-8" standalone="no"?>
    <document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="5053" systemVersion="13D65" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" initialViewController="vXZ-lx-hvc">
        <dependencies>
            <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="3733"/>
        </dependencies>
        <scenes>
            <!--View Controller-->
            <scene sceneID="ufC-wZ-h7g">
                <objects>
                    <viewController id="vXZ-lx-hvc" customClass="LWTViewController" sceneMemberID="viewController">
                        <view key="view" contentMode="scaleToFill" id="kh9-bI-dsS">
                            <rect key="frame" x="0.0" y="0.0" width="320" height="480"/>
                            <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
                            <subviews>
                                <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" id="tF8-9P-CEF">
                                    <rect key="frame" x="0.0" y="0.0" width="320" height="480"/>
                                    <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
                                </imageView>
                            </subviews>
                            <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
                        </view>
                        <connections>
                            <outlet property="imageView" destination="tF8-9P-CEF" id="Hph-ej-7S9"/>
                        </connections>
                    </viewController>
                    <placeholder placeholderIdentifier="IBFirstResponder" id="x5A-6p-PRh" sceneMemberID="firstResponder"/>
                </objects>
            </scene>
        </scenes>
        <simulatedMetricsContainer key="defaultSimulatedMetrics">
            <simulatedStatusBarMetrics key="statusBar"/>
            <simulatedOrientationMetrics key="orientation"/>
            <simulatedScreenMetrics key="destination"/>
        </simulatedMetricsContainer>
    </document>
    View Code

    LWTViewController.h

    #import <UIKit/UIKit.h>
    
    @interface LWTViewController : UIViewController
    
    @end
    View Code

    LWTViewController.m

     1 //
     2 //  LWTViewController.m
     3 //  Quartz2D练习 -- 绘制水印的image分类
     4 //
     5 //  Created by apple on 14-6-10.
     6 //  Copyright (c) 2014年 lwt. All rights reserved.
     7 //
     8 
     9 #import "LWTViewController.h"
    10 #import "UIImage+WaterStain.h"
    11 
    12 @interface LWTViewController ()
    13 @property (weak, nonatomic) IBOutlet UIImageView *imageView;
    14 
    15 @end
    16 
    17 @implementation LWTViewController
    18 
    19 - (void)viewDidLoad
    20 {
    21     [super viewDidLoad];
    22     // Do any additional setup after loading the view, typically from a nib.
    23 
    24     UIImage *newImage = [UIImage imageWithImageName:@"scene" waterStainIconName:@"logo"];
    25     UIImage *newImage1 = [UIImage imageWithImageName:@"scene" waterStainNSString:@"我是水印" CGSize:CGSizeMake(MAXFLOAT, MAXFLOAT) font:[UIFont systemFontOfSize:7.0] padding:5];
    26     
    27     /*
    28      // 测试图片效果
    29     self.imageView.image = newImage;
    30     self.imageView.frame = CGRectMake(50, 50, imageX, imageY);
    31     */
    32     // 保存图片
    33     // 将图片传承二进制数据
    34     NSData *data = UIImagePNGRepresentation(newImage);
    35     NSData *data1 = UIImagePNGRepresentation(newImage1);
    36     
    37     // 保存图片的地址
    38     NSString *path = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject] stringByAppendingPathComponent:@"waterStain.png"];
    39     NSString *path1 = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject] stringByAppendingPathComponent:@"waterStain1.png"];
    40     
    41     NSLog(@"%@",path);
    42     
    43     // 保存图片
    44     [data writeToFile:path atomically:YES];
    45     [data1 writeToFile:path1 atomically:YES];
    46     
    47 }
    48 
    49 @end
    View Code

    UIImage+WaterStain.h

    //
    //  UIImage+WaterStain.h
    //  Quartz2D练习 -- 绘制水印的image分类
    //
    //  Created by apple on 14-6-10.
    //  Copyright (c) 2014年 lwt. All rights reserved.
    //
    
    #import <UIKit/UIKit.h>
    
    @interface UIImage (WaterStain)
    /**
     *  给图片添加左上角图片水印
     *
     *  @param imageName 要添加水印的图片
     *  @param iconName  水印图片
     *
     *  @return 添加了水印的图片
     */
    + (UIImage *)imageWithImageName:(NSString *)imageName waterStainIconName:(NSString *)iconName;
    /**
     *  给图片右下角添加文字图片水印
     *
     *  @param imageName 要添加水印的图片
     *  @param waterStr  添加的水印文字
     *  @param maxSize   文字最大范围
     *  @param textFont  字体大小
     *  @param padding   文字的内边距
     *
     *  @return 添加了水印的图片
     */
    + (UIImage *)imageWithImageName:(NSString *)imageName waterStainNSString: (NSString *)waterStr CGSize:(CGSize)maxSize font: (UIFont *)textFont padding: (CGFloat)padding;
    
    @end
    View Code

    UIImage+WaterStain.m

    //
    //  UIImage+WaterStain.m
    //  Quartz2D练习 -- 绘制水印的image分类
    //
    //  Created by apple on 14-6-10.
    //  Copyright (c) 2014年 lwt. All rights reserved.
    //
    
    #import "UIImage+WaterStain.h"
    #import "NSString+Extension.h"
    
    @implementation UIImage (WaterStain)
    
    + (UIImage *)imageWithImageName:(NSString *)imageName waterStainIconName:(NSString *)iconName
    {
        UIImage *image = [UIImage imageNamed:imageName];
        
        CGFloat imageX = image.size.width;
        CGFloat imageY = image.size.height;
        
        // 创建bigmap图形上下文
        UIGraphicsBeginImageContextWithOptions(image.size, NO, 0);
        
        // 绘制图片
        [image drawInRect:CGRectMake(0, 0, imageX, imageY)];
        
        CGFloat margin = 10;
        
        // 绘制图片水印
        UIImage *icon = [UIImage imageNamed:iconName];
        
        CGFloat iconX = imageX - icon.size.width - margin;
        CGFloat iconY = margin;
        CGFloat iconW = icon.size.width;
        CGFloat iconH = icon.size.height;
        // 绘制水印图片
        [icon drawInRect:CGRectMake(iconX, iconY, iconW, iconH)];
        
        // 获取绘制的图片
        UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
        
        return newImage;
    }
    
    + (UIImage *)imageWithImageName:(NSString *)imageName waterStainNSString:(NSString *)waterStr CGSize:(CGSize)maxSize font:(UIFont *)textFont padding:(CGFloat)padding
    {
        UIImage *image = [UIImage imageNamed:imageName];
        
        CGFloat imageX = image.size.width;
        CGFloat imageY = image.size.height;
        
        // 创建bigmap图形上下文
        UIGraphicsBeginImageContextWithOptions(image.size, NO, 0);
        
        // 绘制图片
        [image drawInRect:CGRectMake(0, 0, imageX, imageY)];
        
        // 绘制文字水印
        NSString *str = waterStr;
        // 获取文字的尺寸
        CGSize size = [str sizeWithFont:textFont andMaxSize:maxSize];
        // 获取文字位置
        CGFloat strX = imageX - size.width - padding;
        CGFloat strY = imageY - size.height - padding;
        
        NSMutableDictionary *dicts = [NSMutableDictionary dictionary];
        dicts[NSForegroundColorAttributeName] = [UIColor orangeColor];
        dicts[NSFontAttributeName] = textFont;
        // 绘制水印文字
        [str drawAtPoint:CGPointMake(strX, strY) withAttributes:dicts];
        
        // 获取绘制的图片
        UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
        
        return newImage;
    }
    
    @end
    View Code

    NSString+Extension.h

    #import <Foundation/Foundation.h>
    
    @interface NSString (Extension)
    
    - (CGSize)sizeWithFont:(UIFont *)font andMaxSize: (CGSize)maxSize;
    
    @end
    View Code

    NSString+Extension.m

    #import "NSString+Extension.h"
    
    @implementation NSString (Extension)
    
    - (CGSize)sizeWithFont:(UIFont *)font andMaxSize:(CGSize)maxSize
    {
        NSDictionary *dict = @{NSFontAttributeName : font};
        CGSize size = [self boundingRectWithSize:maxSize options:NSStringDrawingUsesLineFragmentOrigin attributes:dict context:nil].size;
        return size;
    }
    
    @end
    View Code
  • 相关阅读:
    pytest实现参数化(@pytest.mark.parametrize)
    pytest标记测试用例为预期失败(@pytest.mark.xfail)
    pytest标记跳过某些测试用例不执行
    pytest的conftest.py配置
    pytest之fixture使用
    模拟赛42 题解
    模拟赛41 题解
    一些可能永远用不到的性质
    补锅
    骗分杂谈
  • 原文地址:https://www.cnblogs.com/wentianblog/p/3782698.html
Copyright © 2020-2023  润新知