Skip to content

Instantly share code, notes, and snippets.

@quentar
Created May 9, 2014 20:34
Show Gist options
  • Save quentar/d92e95728ce0d950db65 to your computer and use it in GitHub Desktop.
Save quentar/d92e95728ce0d950db65 to your computer and use it in GitHub Desktop.
iOS UIImage from UIView , Images from View , JPG from UIView , UIImage from Scrollview
//extract from class ObCommons, hence the calls to this class are named so
+(UIImage*) createImageFromView:(UIView*)newt withRect:(CGSize)rensize {
UIGraphicsBeginImageContextWithOptions(rensize,NO,[ObCommons retinaFactor]);
[newt.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *ximage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return ximage;
}
+(UIImage*) createJPEGfromView:(UIView*)newt withRect:(CGSize)rensize toPath:(NSString*)filePath {
return [ObCommons createJPEGfromView:newt withRect:rensize toPath:filePath quality:1.0];
}
+(UIImage*) createJPEGfromView:(UIView*)newt withRect:(CGSize)rensize toPath:(NSString*)filePath quality:(float)quality{
UIImage *ximage = [ObCommons createImageFromView:newt withRect:rensize];
NSData *imageData = UIImageJPEGRepresentation(ximage, quality);
if (filePath!=nil) {
[imageData writeToFile:filePath atomically:YES];
}
return ximage;
}
+(UIImage*) createImageFromScrollView:(UIScrollView*)_scrollView
{
UIImage* image = nil;
UIGraphicsBeginImageContext(_scrollView.contentSize);
{
CGPoint savedContentOffset = _scrollView.contentOffset;
CGRect savedFrame = _scrollView.frame;
_scrollView.contentOffset = CGPointZero;
_scrollView.frame = CGRectMake(0, 0, _scrollView.contentSize.width, _scrollView.contentSize.height);
[_scrollView.layer renderInContext: UIGraphicsGetCurrentContext()];
image = UIGraphicsGetImageFromCurrentImageContext();
_scrollView.contentOffset = savedContentOffset;
_scrollView.frame = savedFrame;
}
UIGraphicsEndImageContext();
return image;
}
+(UIImage*) createPNGfromImage:(UIImage*)source forPath:(NSString*)targetPath {
if (source != nil) {
[UIImagePNGRepresentation(source) writeToFile: targetPath atomically: YES];
}
return source;
}
+(UIImage*) createJPEGforImage:(UIImage*)source forPath:(NSString*)targetPath quality:(float)quality{
if (source != nil) {
[UIImageJPEGRepresentation(source,quality) writeToFile: targetPath atomically: YES];
}
return source;
}
+(CGFloat)retinaFactor {
if ([[UIScreen mainScreen] respondsToSelector:@selector(scale)] && [[UIScreen mainScreen] scale] > 1){
return [[UIScreen mainScreen]scale];
} else {
return 1.0f;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment