- (UIView*)AddImageAtPage:(int)pageIndex TargetSize:(CGSize)targetSize{
UIImage* image;
UIImageView*imageView;
// 文件路径的转换
NSString*filePath =[[NSBundlemainBundle] pathForResource:@"sudoku6"ofType:@"pdf"];
CFStringRef path =CFStringCreateWithCString(NULL, [filePathUTF8String], kCFStringEncodingUTF8);
CFURLRef url =CFURLCreateWithFileSystemPath(NULL, path,kCFURLPOSIXPathStyle, 0);
CFRelease(path);
CGPDFDocumentRef pdfRef =CGPDFDocumentCreateWithURL(url);
if (CGPDFDocumentGetNumberOfPages(pdfRef) ==0) {
return nil;
}
CFRelease(url);
//取得指定页面的内容
CGPDFPageRef page = CGPDFDocumentGetPage(pdfRef,pageIndex);
if (page) {
CGRect pageSize =CGPDFPageGetBoxRect(page, kCGPDFMediaBox);//(595.276,807.874)
//CGContextRef作成
CGContextRef outContext =CGBitmapContextCreate(NULL,pageSize.size.width,pageSize.size.height,8,0,CGColorSpaceCreateDeviceRGB(),kCGImageAlphaPremultipliedLast | kCGBitmapByteOrder32Big);
if (outContext)
{
//缩略图表示用image的输出
CGContextDrawPDFPage(outContext, page);
CGImageRef pdfImageRef = CGBitmapContextCreateImage(outContext);
CGContextRelease(outContext);
image = [UIImage imageWithCGImage:pdfImageRef];
imageView=[[UIImageView alloc]initWithImage:[self Scaleimage:image TargetSize:targetSize]];
imageView.backgroundColor=[UIColorwhiteColor];
imageView.userInteractionEnabled=YES;
[imageView setMultipleTouchEnabled:YES];
//[image release];
CGImageRelease(pdfImageRef);
//CGPDFPageRelease(page);
CGPDFDocumentRelease(pdfRef);
pdfRef = NULL;
}
}
UIView*theView=[[UIViewalloc]init];
[theView addSubview:imageView];
[imageView release];
return [theView autorelease];
}
- (UIImage *)Scaleimage:(UIImage*)source TargetSize:(CGSize)targetSize{
//切割图片
UIImage *sourceImage=source;
CGImageRef imageRef =CGImageCreateWithImageInRect([sourceImage CGImage],CGRectMake(45,40, 244,244));
UIImage *cropImage = [UIImageimageWithCGImage:imageRef];
//本地是否存在
NSString *documentPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES)objectAtIndex:0];
NSString *filePath = [NSStringstringWithFormat:@"%@/MyImageCaches",documentPath];
if (![[NSFileManagerdefaultManager] fileExistsAtPath:filePath])
{
[[NSFileManagerdefaultManager] createDirectoryAtPath:filePathwithIntermediateDirectories:YESattributes:nilerror:nil];
}
NSString *lastName = @"yangge.jpg";
NSString *filePath1 = [filePath stringByAppendingFormat:@"/%@",lastName];
if ([UIImageJPEGRepresentation(sourceImage,1)writeToFile:filePath1 atomically:YES]) {
NSLog(@"UIImagePNGRepresentation成功");
}
NSString *lastName2 = @"yangge2.jpg";
NSString *filePath2 = [filePath stringByAppendingFormat:@"/%@",lastName2];
if ([UIImageJPEGRepresentation(cropImage,1)writeToFile:filePath2 atomically:YES]) {
NSLog(@"UIImagePNGRepresentation2成功");
}
//按目标要求转化到大小
UIImage *newImage = nil;
//NSLog(@"sourceImage.size:%f,%f",sourceImage.size.width,sourceImage.size.height);
UIGraphicsBeginImageContext(CGSizeMake(targetSize.width, targetSize.height));
CGRect thumbnailRect=CGRectMake(0,0, targetSize.width,targetSize.height);
[sourceImage drawInRect:thumbnailRect];
newImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
//NSLog(@"newimage:%f,%f",newImage.size.width,newImage.size.height);
if(newImage == nil)
NSLog(@"could not scale image");
return newImage;
}