CGBitmapContextCreateImage或CGContextDrawImage不起作用

时间:2014-06-22 17:00:53

标签: objective-c xcode uiimage cgcontext cgimageref

我无法解决这个问题。加载图片,转换为CGImageRef。尝试获取位图上下文并在屏幕上呈现。

 NSURL *imageFileURL = [NSURL fileURLWithPath:stringIMG];

   CGImageSourceRef imageSource = CGImageSourceCreateWithURL((CFURLRef)imageFileURL, NULL);
   CGImageRef imageRef = CGImageSourceCreateImageAtIndex(imageSource, 0, NULL);

    NSInteger bitsPerComponent = CGImageGetBitsPerComponent(imageRef);
    NSInteger bitsPerPixel = CGImageGetBitsPerPixel(imageRef);
    CGBitmapInfo bitmapInfo = CGImageGetBitmapInfo(imageRef);
    NSInteger bytesPerRow = CGImageGetBytesPerRow(imageRef);
    NSInteger width = CGImageGetWidth(imageRef);
    NSInteger height = CGImageGetHeight(imageRef);
    CGColorSpaceRef colorspace = CGImageGetColorSpace(imageRef);

    size_t rawData = bytesPerRow*height;
    unsigned char *data = malloc(rawData);
    memset(data2, 0, rawData);

     CGContextRef context = CGBitmapContextCreate(data, width, height, bitsPerComponent, bytesPerRow, colorspace, bitmapInfo);


    CGImageRef imageRef2 = CGBitmapContextCreateImage(context);

   // CGContextDrawImage(context, CGRectMake(0, 0, width, height), imageRef2);
    UIImage *result = [UIImage imageWithCGImage:imageRef2];//if i do like this i got white empty screen

    UIImageView *image = [[UIImageView alloc] initWithImage:result];
    [self.view addSubview:image];// if i do like this i got black rectangle on the white screen

我不知道。我通过断点检查上下文不是null。我不知道该怎么办。也许任何人都可以帮助我?

1 个答案:

答案 0 :(得分:0)

类别将其添加到UIImage以使用CoreGraphics调整大小

<强>的UIImage + Resize.h

<script type="text/javascript">
  document.addEventListener("DOMContentLoaded", function(event) {
  var currentTime = new Date()
  var hours = currentTime.getHours()
  var minutes = currentTime.getMinutes()

  if (minutes < 10){
  minutes = "0" + minutes;
  }
  var suffix = "AM";
  if (hours >= 12) {
  suffix = "PM";
  hours = hours - 12;
  }
  if (hours == 0) {
  hours = 12;
  }
  document.getElementById("time").value = ("" + hours + ":" + minutes + " " + suffix + "");
  });

<强>的UIImage + Resizing.m

#import <UIKit/UIKit.h>

@interface UIImage (Resizing)

-(UIImage*)resizedImageWithSize:(CGSize)size;

@end