【问题标题】:image manipulation using slider in iphone在 iphone 中使用滑块进行图像处理
【发布时间】:2012-01-16 12:33:22
【问题描述】:

有没有办法为 uiimages 应用亮度。例如,我有一个 UIImageview,在里面我有一个 uiimage。我想在不使用 GlImageprocessing 的情况下借助 UISlider 来控制其亮度。

请帮我解决这个问题,请不要向我推荐 GlImageprocessing。我想在不使用 GlImageprocessing 的情况下做到这一点。

【问题讨论】:

    标签: iphone ios ios4


    【解决方案1】:

    这里是代码:-

            CGImageRef inImage = currentImage.CGImage;
            CFDataRef ref = CGDataProviderCopyData(CGImageGetDataProvider(inImage)); 
            UInt8 * buf = (UInt8 *) CFDataGetBytePtr(ref); 
            int length = CFDataGetLength(ref);
            float value2 =  (1+slider.value-0.5);
            NSLog(@"%i",value);
            for(int i=0; i<length; i+=4)
            {
    
    
                int r = i;
                int g = i+1;
                int b = i+2;
    
                int red = buf[r];
                int green = buf[g];
                int blue = buf[b];
    
    
                buf[r] = SAFECOLOR(red*value2);
                buf[g] = SAFECOLOR(green*value2);
                buf[b] = SAFECOLOR(blue*value2);
            }
    
            CGContextRef ctx = CGBitmapContextCreate(buf,
                                                     CGImageGetWidth(inImage), 
                                                     CGImageGetHeight(inImage), 
                                                     CGImageGetBitsPerComponent(inImage),
                                                     CGImageGetBytesPerRow(inImage), 
                                                     CGImageGetColorSpace(inImage),
                                                     CGImageGetAlphaInfo(inImage));
    
            CGImageRef img = CGBitmapContextCreateImage(ctx);
    
            [photoEditView setImage:[UIImage imageWithCGImage:img]];
            CFRelease(ref);
            CGContextRelease(ctx);
            CGImageRelease(img);
    

    在顶部定义这个:-

          #define SAFECOLOR(color) MIN(255,MAX(0,color))
    

    【讨论】:

    • SAFECOLOR 的定义在哪里?
    • github上有与图像编辑相关的代码,我找不到那个链接,谷歌可能是你可以找到它具有图像编辑所有功能的链接
    【解决方案2】:

    看看 Apple 的演示应用程序 GLImageProcessing ,真的很快:

    【讨论】:

      【解决方案3】:

      打开Gl到UIImage Create

      -(UIImage *) glToUIImage {

      NSInteger myDataLength = 320 * 480 * 4;
       // allocate array and read pixels into it.
      GLubyte *buffer = (GLubyte *) malloc(myDataLength);
      glReadPixels(0, 0, 320, 480, GL_RGBA, GL_UNSIGNED_BYTE, buffer);
      
      // gl renders "upside down" so swap top to bottom into new array.
      // there's gotta be a better way, but this works.
      GLubyte *buffer2 = (GLubyte *) malloc(myDataLength);
      for(int y = 0; y <480; y++)
      {
          for(int x = 0; x <320 * 4; x++)
          {
              buffer2[(479 - y) * 320 * 4 + x] = buffer[y * 4 * 320 + x];
          }
      }
      // make data provider with data.
      CGDataProviderRef provider = CGDataProviderCreateWithData(
                                                                NULL, buffer2, myDataLength, NULL);
      
      // prep the ingredients
      int bitsPerComponent = 8;
      int bitsPerPixel = 32;
      int bytesPerRow = 4 * 320;
      CGColorSpaceRef colorSpaceRef = CGColorSpaceCreateDeviceRGB();
      
      CGBitmapInfo bitmapInfo = kCGImageAlphaNone;
      
      CGColorRenderingIntent renderingIntent = kCGRenderingIntentDefault;
      
      // make the cgimage
      CGImageRef imageRef = CGImageCreate(320, 480, bitsPerComponent, bitsPerPixel, bytesPerRow, colorSpaceRef, bitmapInfo, provider, NULL, NO, renderingIntent);
      
      // then make the uiimage from that
      
      
      UIImage *myImage = [UIImage imageWithCGImage:imageRef];
      CGImageRelease(imageRef);
      
      //UIImageWriteToSavedPhotosAlbum(myImage,nil,nil,nil);
      
      [[NSUserDefaults standardUserDefaults] setObject:UIImageJPEGRepresentation(myImage,1) forKey:@"image"];    
      
      return myImage;
      

      }

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-06-13
        相关资源
        最近更新 更多