1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > iOS开发之去除图片白色背景

iOS开发之去除图片白色背景

时间:2023-09-26 21:40:18

相关推荐

iOS开发之去除图片白色背景

//去除图片的白色背景

- (UIImage *) imageToTransparent:(UIImage*) image{// 分配内存const int imageWidth = image.size.width;const int imageHeight = image.size.height;size_t bytesPerRow = imageWidth * 4;uint32_t* rgbImageBuf = (uint32_t*)malloc(bytesPerRow * imageHeight);// 创建contextCGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();CGContextRef context = CGBitmapContextCreate(rgbImageBuf, imageWidth, imageHeight, 8, bytesPerRow, colorSpace,kCGBitmapByteOrder32Little | kCGImageAlphaNoneSkipLast);CGContextDrawImage(context, CGRectMake(0, 0, imageWidth, imageHeight), image.CGImage);// 遍历像素int pixelNum = imageWidth * imageHeight;uint32_t* pCurPtr = rgbImageBuf;for (int i = 0; i < pixelNum; i++, pCurPtr++){// //去除白色...将0xFFFFFF00换成其它颜色也可以替换其他颜色。// if ((*pCurPtr & 0xFFFFFF00) >= 0xffffff00) {//// uint8_t* ptr = (uint8_t*)pCurPtr;// ptr[0] = 0;// }//接近白色//将像素点转成子节数组来表示---第一个表示透明度即ARGB这种表示方式。ptr[0]:透明度,ptr[1]:R,ptr[2]:G,ptr[3]:B//分别取出RGB值后。进行判断需不需要设成透明。uint8_t* ptr = (uint8_t*)pCurPtr;if (ptr[1] > 240 && ptr[2] > 240 && ptr[3] > 240) {//当RGB值都大于240则比较接近白色的都将透明度设为0.-----即接近白色的都设置为透明。某些白色背景具有杂质就会去不干净,用这个方法可以去干净ptr[0] = 0;}}// 将内存转成imageCGDataProviderRef dataProvider =CGDataProviderCreateWithData(NULL, rgbImageBuf, bytesPerRow * imageHeight, nil);CGImageRef imageRef = CGImageCreate(imageWidth, imageHeight,8, 32, bytesPerRow, colorSpace,kCGImageAlphaLast |kCGBitmapByteOrder32Little, dataProvider,NULL, true,kCGRenderingIntentDefault);CGDataProviderRelease(dataProvider);UIImage* resultUIImage = [UIImage imageWithCGImage:imageRef];// 释放CGImageRelease(imageRef);CGContextRelease(context);CGColorSpaceRelease(colorSpace);return resultUIImage;}

// 使用颜色生成图片

-(UIImage) createImageWithColor:(UIColor) color

{

CGRect rect=CGRectMake(0.0f, 0.0f, 1.0f, 1.0f);

UIGraphicsBeginImageContext(rect.size);

CGContextRef context = UIGraphicsGetCurrentContext();

CGContextSetFillColorWithColor(context, [color CGColor]);

CGContextFillRect(context, rect);

UIImage *theImage = UIGraphicsGetImageFromCurrentImageContext();

UIGraphicsEndImageContext();

return theImage;

}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。