-
(UIImage
*
)resizeImage:(UIImage
*
)image toWidth:(NSInteger)width height:(NSInteger)height
{
//
Create a graphics context with the target size
//
On iOS 4 and later, use UIGraphicsBeginImageContextWithOptions to take the scale into consideration
//
On iOS prior to 4, fall back to use UIGraphicsBeginImageContext
CGSize size
=
CGSizeMake(width, height);
if
(NULL
!=
UIGraphicsBeginImageContextWithOptions)
UIGraphicsBeginImageContextWithOptions(size, NO,
0
);
else
UIGraphicsBeginImageContext(size);
CGContextRef context
=
UIGraphicsGetCurrentContext();
//
Flip the context because UIKit coordinate system is upside down to Quartz coordinate system
CGContextTranslateCTM(context,
0.0
, height);
CGContextScaleCTM(context,
1.0
,
-
1.0
);
//
Draw the original image to the context
CGContextSetBlendMode(context, kCGBlendModeCopy);
CGContextDrawImage(context, CGRectMake(
0.0
,
0.0
, width, height), image.CGImage);
//
Retrieve the UIImage from the current context
UIImage
*
imageOut
=
UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return
imageOut;
}
2.UIView旋转:
代码
-
(
void
)rotateView:(UIView
*
)view toAngle:(
float
)angle
{
[UIView beginAnimations:nil context:nil];
[view setTransform:CGAffineTransformMakeRotation(angle)];
[UIView commitAnimations];
}
3. 颜色处理函数:
代码
#pragma
mark Color convert
-
(UIColor
*
) str2Color:(NSString
*
)str {
SEL blackSel
=
NSSelectorFromString(str);
//
NSSelectorFromString(@"blackColor");
UIColor
*
tColor
=
nil;
if
([UIColor respondsToSelector: blackSel])
tColor
=
[UIColor performSelector:blackSel];
return
tColor;
}
-
(UIColor
*
) hexStr2Color:(NSString
*
)hexStr {
NSString
*
cString
=
[[hexStr stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]] uppercaseString];
//
String should be 6 or 8 characters
if
([cString length]
<
6
)
return
[UIColor blackColor];
//
strip 0X if it appears
if
([cString hasPrefix:
@"
0X
"
]) cString
=
[cString substringFromIndex:
2
];
if
([cString length]
!=
6
)
return
[UIColor blackColor];
//
Separate into r, g, b substrings
NSRange range;
range.location
=
0
;
range.length
=
2
;
NSString
*
rString
=
[cString substringWithRange:range];
range.location
=
2
;
NSString
*
gString
=
[cString substringWithRange:range];
range.location
=
4
;
NSString
*
bString
=
[cString substringWithRange:range];
//
Scan values
unsigned
int
r, g, b;
[[NSScanner scannerWithString:rString] scanHexInt:
&
r];
[[NSScanner scannerWithString:gString] scanHexInt:
&
g];
[[NSScanner scannerWithString:bString] scanHexInt:
&
b];
return
[UIColor colorWithRed:((
float
) r
/
255.0f
)
green:((
float
) g
/
255.0f
)
blue:((
float
) b
/
255.0f
)
alpha:
1.0f
];
}
-
(NSString
*
)color2str:(UIColor
*
)color {
CGColorRef c
=
color.CGColor;
const
CGFloat
*
components
=
CGColorGetComponents(c);
size_t numberOfComponents
=
CGColorGetNumberOfComponents(c);
NSMutableString
*
s
=
[[[NSMutableString alloc] init] autorelease];
[s appendString:
@"
{
"
];
for
(size_t i
=
0
; i
<
numberOfComponents;
++
i) {
if
(i
>
0
) {
[s appendString:
@"
,
"
];
}
[s appendString:[NSString stringWithFormat:
@"
%d
"
, (
int
)(components[i]
*
255
) ]];
}
[s appendString:
@"
}
"
];
return
s;
}
-
(NSString
*
)color2str1:(UIColor
*
)color {
const
CGFloat
*
components
=
CGColorGetComponents(color.CGColor);
NSString
*
colorAsString
=
[NSString stringWithFormat:
@"
%1f,%1f,%1f,%1f
"
, components[
0
]
*
255
, components[
1
]
*
255
, components[
2
]
*
255
, components[
3
]];
}
4. 三点坐标中间点对应的角度,以及判断是否顺时针
代码
-
(BOOL) chkClockWise:(CGPoint)a B:(CGPoint)b C:(CGPoint)c {
double
ax
=
a.x
-
b.x;
double
ay
=
-
a.y
+
b.y;
double
cx
=
c.x
-
b.x;
double
cy
=
-
c.y
+
b.y;
NSLog(
@"
result:%d
"
,(cy
*
ax)
<=
(ay
*
cx));
NSLog(
@"
(x1,y1)=(%1f,%1f)
"
,ax, ay);
NSLog(
@"
(x2,y2)=(%1f,%1f)\r\n\r\n
"
,cx, cy);
return
((cy
*
ax)
<=
(ay
*
cx));
}
5. 点坐标旋转后弧度后获取新的坐标:
代码
6. 抓取UIView上任意点的颜色:
代码
-
(UIColor
*
) getPixelColorAtLocation:(CGPoint)point {
UIGraphicsBeginImageContext(self.bounds.size);
[self.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage
*
viewImage
=
UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
CGImageRef inImage
=
viewImage.CGImage;
UIColor
*
color
=
nil;
//
Create off screen bitmap context to draw the image into. Format ARGB is 4 bytes for each pixel: Alpa, Red, Green, Blue
CGContextRef cgctx
=
[self createARGBBitmapContextFromImage:inImage];
if
(cgctx
==
NULL) {
return
nil;
/*
error
*/
}
size_t w
=
CGImageGetWidth(inImage);
size_t h
=
CGImageGetHeight(inImage);
CGRect rect
=
{{
0
,
0
},{w,h}};
//
Draw the image to the bitmap context. Once we draw, the memory
//
allocated for the context for rendering will then contain the
//
raw image data in the specified color space.
CGContextDrawImage(cgctx, rect, inImage);
//
Now we can get a pointer to the image data associated with the bitmap
//
context.
unsigned
char
*
data
=
CGBitmapContextGetData (cgctx);
if
(data
!=
NULL) {
//
offset locates the pixel in the data from x,y.
//
4 for 4 bytes of data per pixel, w is width of one row of data.
int
offset
=
4
*
((w
*
round(point.y))
+
round(point.x));
int
alpha
=
data[offset];
int
red
=
data[offset
+
1
];
int
green
=
data[offset
+
2
];
int
blue
=
data[offset
+
3
];
NSLog(
@"
offset: %i colors: RGB A %i %i %i %i
"
,offset,red,green,blue,alpha);
color
=
[UIColor colorWithRed:(red
/
255.0f
) green:(green
/
255.0f
) blue:(blue
/
255.0f
) alpha:(alpha
/
255.0f
)];
}
//
When finished, release the context
CGContextRelease(cgctx);
//
Free image data memory for the context
if
(data) { free(data); }
return
color;
}
-
(CGContextRef) createARGBBitmapContextFromImage:(CGImageRef) inImage {
CGContextRef context
=
NULL;
CGColorSpaceRef colorSpace;
void
*
bitmapData;
int
bitmapByteCount;
int
bitmapBytesPerRow;
//
Get image width, height. We'll use the entire image.
size_t pixelsWide
=
CGImageGetWidth(inImage);
size_t pixelsHigh
=
CGImageGetHeight(inImage);
//
Declare the number of bytes per row. Each pixel in the bitmap in this
//
example is represented by 4 bytes; 8 bits each of red, green, blue, and
//
alpha.
bitmapBytesPerRow
=
(pixelsWide
*
4
);
bitmapByteCount
=
(bitmapBytesPerRow
*
pixelsHigh);
//
Use the generic RGB color space.
colorSpace
=
CGColorSpaceCreateDeviceRGB();
if
(colorSpace
==
NULL)
{
fprintf(stderr,
"
Error allocating color space\n
"
);
return
NULL;
}
//
Allocate memory for image data. This is the destination in memory
//
where any drawing to the bitmap context will be rendered.
bitmapData
=
malloc( bitmapByteCount );
if
(bitmapData
==
NULL)
{
fprintf (stderr,
"
Memory not allocated!
"
);
CGColorSpaceRelease( colorSpace );
return
NULL;
}
//
Create the bitmap context. We want pre-multiplied ARGB, 8-bits
//
per component. Regardless of what the source image format is
//
(CMYK, Grayscale, and so on) it will be converted over to the format
//
specified here by CGBitmapContextCreate.
context
=
CGBitmapContextCreate (bitmapData,
pixelsWide,
pixelsHigh,
8
,
//
bits per component
bitmapBytesPerRow,
colorSpace,
kCGImageAlphaPremultipliedFirst);
if
(context
==
NULL)
{
free (bitmapData);
fprintf (stderr,
"
Context not created!
"
);
}
//
Make sure and release colorspace before returning
CGColorSpaceRelease( colorSpace );
return
context;
}
7. 在iphone程序中实现截屏的一种方法:
//导入头文件
#import <QuartzCore/QuartzCore.h>
//将整个self.view大小的图层内容创建一张图片image
UIGraphicsBeginImageContext(self.view.bounds.size);
[self.view.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *image= UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
//然后将该图片保存到图片图
UIImageWriteToSavedPhotosAlbum(image, self, nil, nil);
8. 画圆点图片:
-(UIImage*)createImage
{
CGSize size = [[UIScreen mainScreen] bounds].size;
CGRect rect = CGRectMake( size.width/2,size.height/2, 5, 5);
UIGraphicsBeginImageContext(size);
CGContextRef context = UIGraphicsGetCurrentContext();
unsigned int red, green, blue;
// Fill color.
CGContextSetRGBFillColor(context, 0, 0.7, 0.7, 1.0);
// Your drawing code.
CGContextFillEllipseInRect(context, rect);
// Get the image and return.
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return image;
}