PDF转换成图片 图片切割

- (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;

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值