圖片

1、壓縮:
// 第一種
- (UIImage *)scaleImage:(UIImage *)image size:(CGSize)imageSize {
UIGraphicsBeginImageContext(imageSize);
[image drawInRect:CGRectMake(0, 0, imageSize.width, imageSize.height)];
UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return newImage;
}

// 第二種
- (void)imageDataLoad{
NSData *pngData = UIImagePNGRepresentation(self.pngImage);
[self.pngImageview setImage:[UIImage imageWithData:pngData]];
}

2、圖片過濾
- (UIImage *)filter{
// 獲取各種參數(shù)
CGImageRef imageRef = self.pngImage.CGImage;
size_t width = CGImageGetWidth(imageRef);
size_t height = CGImageGetHeight(imageRef);
size_t bits = CGImageGetBitsPerComponent(imageRef);
size_t bitsPreRow = CGImageGetBytesPerRow(imageRef);
CGColorSpaceRef colorSpace = CGImageGetColorSpace(imageRef);
int alphaInfo = CGImageGetAlphaInfo(imageRef);

    CGDataProviderRef provideRef = CGImageGetDataProvider(imageRef);
    CFDataRef dataRef = CGDataProviderCopyData(provideRef);
    
    int length = (int)CFDataGetLength(dataRef);
    
    
    UInt8 *pixelBuf = CFDataGetMutableBytePtr((CFMutableDataRef)dataRef);
    for (int i = 0; i < length; i+=4) {
        [self yjhImageFilterFormBuf:pixelBuf offset:i];
    }
    CGContextRef contextRef = CGBitmapContextCreate(pixelBuf, width, height, bits, bitsPreRow, colorSpace, alphaInfo);
    CGImageRef backImageRef = CGBitmapContextCreateImage(contextRef);
    UIImage *backImage = [UIImage imageWithCGImage:backImageRef scale:[UIScreen mainScreen].scale orientation:self.pngImage.imageOrientation];
    CFRelease(dataRef);
    CFRelease(contextRef);
    CFRelease(backImageRef);
    return backImage;
}
// 像素點(diǎn)處理
- (void)yjhImageFilterFormBuf:(UInt8*)pixeBuf offset:(int)offset{
    int offsetR = offset;
    int offsetG = offset + 1;
    int offsetB = offset + 2;
    int red = pixeBuf[offsetR];
    int green = pixeBuf[offsetG];
    int blue = pixeBuf[offsetB];

    pixeBuf[offsetB] = red * 0.3;
    pixeBuf[offsetG] = green * 0.3;
    pixeBuf[offsetB] = blue * 0.3;

}

3、 截屏

// 圖片放到view
- (UIImage *)imageFromView:(UIView *)view {
    
    UIGraphicsBeginImageContext(view.frame.size);
    // 獲取上下文
    CGContextRef context = UIGraphicsGetCurrentContext();
    // 渲染到view
    [view.layer renderInContext:context];
    // 把上下文生成圖片
    UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
    newImage = [self getSubImage:CGRectMake(100, 100, 100, 100) image:newImage.CGImage];
    UIGraphicsEndImageContext();
    return newImage;
}

- (UIImage *)getSubImage:(CGRect)rect image:(CGImageRef)cgImage {
    CGImageRef imageRef = CGImageCreateWithImageInRect(cgImage, rect);
    UIImage *subImage = [UIImage imageWithCGImage:imageRef];
    return subImage;
}
// 傳入一張圖片進(jìn)行裁剪
- (UIImage *)circleImage:(UIImage *)image {
    // 圖片編輯開始
    UIGraphicsBeginImageContext(CGSizeMake(200, 200));
    // 獲取上下文
    CGContextRef context = UIGraphicsGetCurrentContext();
    CGContextSetLineWidth(context, 1);
    CGContextSetStrokeColorWithColor(context, [UIColor redColor].CGColor);
    CGContextAddEllipseInRect(context, CGRectMake(0, 0, 200, 200));
    // 裁剪
    CGContextClip(context);
    [image drawInRect:CGRectMake(0, 0, 200, 200)];
    // 圖片編輯結(jié)束
    UIGraphicsEndImageContext();
    return image;
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容