【发布时间】:2010-09-22 12:30:19
【问题描述】:
我是 iphone 新手,我正在制作一个我想更改图像像素的应用程序。我正在使用 uiimageview。我已经完成了一些工作。我认为像素数据发生了变化,但它不显示新的更新图像。 这是我的代码
-(void)Change{
struct pixel {
unsigned char r, g, b, a;
};
UIImage *myimage = [ UIImage imageNamed:@"iphone-wallpapaer-silver-apple.jpg"];
NSUInteger numberOfRedPixels = 0;
NSUInteger numberOfGreenPixels = 0;
NSUInteger numberOfBluePixels = 0;
NSUInteger numberOfAlphaPixels = 0;
struct pixel* pixels = (struct pixel*) calloc(1, myimage.size.width * myimage.size.height * sizeof(struct pixel));
if (pixels != nil)
{
// Create a new bitmap
CGContextRef context = CGBitmapContextCreate(
(void*) pixels,
myimage.size.width,
myimage.size.height,
8,
myimage.size.width * 4,
CGImageGetColorSpace(myimage.CGImage),
kCGImageAlphaPremultipliedLast
);
if (context != NULL)
{
// Draw the image in the bitmap
CGContextDrawImage(context, CGRectMake(0.0f, 0.0f, myimage.size.width, myimage.size.height), myimage.CGImage);
NSUInteger numberOfPixels = myimage.size.width * myimage.size.height;
//NSLog(@"%d",numberOfPixels);
while (numberOfPixels > 0) {
if (pixels->r == 255) {
pixels->r = 0;
//NSLog(@"%d",pixels->r);
numberOfRedPixels++;
}
if(pixels->g == 255){
pixels->g = 0;
//NSLog(@"%d",pixels->g);
numberOfGreenPixels ++;
}
if(pixels->b == 255){
pixels->b = 0;
//NSLog(@"%d",pixels->b);
numberOfBluePixels ++;
}
if(pixels->a == 255){
pixels->a = 0;
numberOfAlphaPixels ++;
}
pixels++;
numberOfPixels--;
}
context = CGBitmapContextCreate((void*)pixels,
myimage.size.width,
myimage.size.height,
8,
myimage.size.width * 4,
CGImageGetColorSpace(myimage.CGImage),
kCGImageAlphaPremultipliedFirst );
UIImage *newImage = [UIImage imageWithCGImage:context];
CGImageRef imageRef = CGBitmapContextCreateImage (newImage);
}
【问题讨论】:
标签: iphone