zoukankan      html  css  js  c++  java
  • 图片 转黑白

    -(UIImage*) convertToGreyscale:(UIImage*)i {int kRed =1;int kGreen =2;int kBlue =4;int colors = kGreen;int m_width = i.size.width;int m_height = i.size.height;uint32_t*rgbImage =(uint32_t*) malloc(m_width * m_height *sizeof(uint32_t));CGColorSpaceRef colorSpace =CGColorSpaceCreateDeviceRGB();CGContextRef context =CGBitmapContextCreate(rgbImage, m_width, m_height,8, m_width *4, colorSpace, kCGBitmapByteOrder32Little | kCGImageAlphaNoneSkipLast);CGContextSetInterpolationQuality(context, kCGInterpolationHigh);CGContextSetShouldAntialias(context, NO);CGContextDrawImage(context,CGRectMake(0,0, m_width, m_height),[i CGImage]);CGContextRelease(context);CGColorSpaceRelease(colorSpace);// now convert to grayscaleuint8_t*m_imageData =(uint8_t*) malloc(m_width * m_height);for(int y =0; y < m_height; y++){for(int x =0; x < m_width; x++){uint32_t rgbPixel=rgbImage[y*m_width+x];uint32_t sum=0,count=0;if(colors & kRed){sum +=(rgbPixel>>24)&255; count++;}if(colors & kGreen){sum +=(rgbPixel>>16)&255; count++;}if(colors & kBlue){sum +=(rgbPixel>>8)&255; count++;}
                m_imageData[y*m_width+x]=sum/count;}}
        free(rgbImage);// convert from a gray scale image back into a UIImageuint8_t*result =(uint8_t*) calloc(m_width * m_height *sizeof(uint32_t),1);// process the image back to rgbfor(int i =0; i < m_height * m_width; i++){
            result[i*4]=0;int val=m_imageData[i];
            result[i*4+1]=val;
            result[i*4+2]=val;
            result[i*4+3]=val;}// create a UIImage
        colorSpace =CGColorSpaceCreateDeviceRGB();
        context =CGBitmapContextCreate(result, m_width, m_height,8, m_width *sizeof(uint32_t), colorSpace, kCGBitmapByteOrder32Little | kCGImageAlphaNoneSkipLast);CGImageRef image =CGBitmapContextCreateImage(context);CGContextRelease(context);CGColorSpaceRelease(colorSpace);UIImage*resultUIImage =[UIImage imageWithCGImage:image];CGImageRelease(image);
    
        free(m_imageData);// make sure the data will be released by giving it to an autoreleased NSData[NSData dataWithBytesNoCopy:result length:m_width * m_height];return resultUIImage;}
  • 相关阅读:
    WPF
    Xamarin.Forms + Prism,整理页面导航跳转流程
    Xamarin.Forms踩坑整理
    整理
    WPF
    LINQ中,Single()、SingleOrDefault()的解析、示例
    InstallShield打包
    Centos7安装jexus,部署asp.net core,asp.net mvc
    c#修改webConfig的内容
    .net core 3.1简单swagger配置教程
  • 原文地址:https://www.cnblogs.com/gaoxiao228/p/3298441.html
Copyright © 2011-2022 走看看