Advertise Mobile SDKs Books Events Forum News Social Networking Support Us
Follow @iphonedevsdk on Twitter

Interface 2, Advanced iOS
Mockup & Code Gen
($9.99)

Make your own iPhone apps
and run them live!
(free)

Pic Frame Dynamo: Photo Editing
($0.99)

Abiliator
($1.99)

Want your application or service advertised on iPhone Dev SDK?

Go Back   iPhone Dev SDK Forum > iPhone SDK Development Forums > iPhone SDK Development

Reply
 
LinkBack Thread Tools Display Modes
Old 01-13-2010, 05:18 AM   #1 (permalink)
Registered Member
 
Join Date: Sep 2009
Posts: 96
Dvdkite is on a distinguished road
Default Help optimize Brightness algorithm for THIS method (Not using OpenGL)

Hi guys,

I'm really new to image processing and I've spent last 2 days surfing on the web searching for a sample code or tutorial that can help me to create a method to modify the Brithness of a UIImage by using a UISlider.

I'm surprised how it's difficult to find some tutorial about that. I've searched here at the forum,google and everywhere but I didn't find a complete tutorial for manage brightness on uiimage.

I know that apple provided the "Image Processing" sample that can do it with OpenGL but it's really difficult to understand for me and I simply can't find how to implement all that code in my app and use it for a UIImage.
So I've find on the web this code that "Should" allow you to modify brightess of an UIImage without use OpenGL.

I've implemented it in my project but it doesn't work correctly, it leave on the image a lot of stripes and the results is horrible... yes the brithness features work but the images pixel are damnaged by the algorith.

Anyone could test this code and help me to optimize it?

Here is the code

Code:
-(void)sliderDidSlide:(id)sender{
	[self doImageStuff:slider.value];
}

-(void)doImageStuff:(int)value{
	CGImageRef img=foto.image.CGImage;
	CFDataRef dataref=CopyImagePixels(img);
	UInt8 *data=(UInt8 *)CFDataGetBytePtr(dataref);
	int length=CFDataGetLength(dataref);
	for(int index=0;index<length;index+=4){
		// BRIGHTNESS
		for(int i=0;i<3;i++){
			if(data[index+i]+value<0){
				data[index+i]=0;
			}else{
				if(data[index+i]+value>255){
					data[index+i]=255;
				}else{
					data[index+i]+=value;
				}
			}
		}
		
		
	}
	size_t width=CGImageGetWidth(img);
	size_t height=CGImageGetHeight(img);
	size_t bitsPerComponent=CGImageGetBitsPerComponent(img);
	size_t bitsPerPixel=CGImageGetBitsPerPixel(img);
	size_t bytesPerRow=CGImageGetBytesPerRow(img);
	CGColorSpaceRef colorspace=CGImageGetColorSpace(img);
	CGBitmapInfo bitmapInfo=CGImageGetBitmapInfo(img);
	CFDataRef newData=CFDataCreate(NULL,data,length);
	CGDataProviderRef provider=CGDataProviderCreateWithCFData(newData);
	CGImageRef newImg=CGImageCreate(width,height,bitsPerComponent,bitsPerPixel,bytesPerRow,colorspace,bitmapInfo,provider,NULL,true,kCGRenderingIntentDefault);
	[foto setImage:[UIImage imageWithCGImage:newImg]];
	CGImageRelease(newImg);
	CGDataProviderRelease(provider);
	
}

and before the implementation this:

Code:
CFDataRef CopyImagePixels(CGImageRef inImage){
    return CGDataProviderCopyData(CGImageGetDataProvider(inImage));
}
Thanks for everone who will join the discussion
Dvdkite is offline   Reply With Quote
Old 01-13-2010, 10:16 AM   #2 (permalink)
Nuisance Developer
 
Join Date: Jul 2009
Location: Italy
Posts: 4,691
dany_dev is on a distinguished road
Default

should work.
http://www.iphonedevsdk.com/forum/ip...lter-code.html

Code:
- (UIImage *) brightness{
	
	
	int level= put here an int value that go from -255 to 255;
	
	
	
    CGImageRef inImage = inputImage;   //Input image cgi
	
    CGContextRef ctx;
    
	
	CFDataRef m_DataRef;
	m_DataRef = CGDataProviderCopyData(CGImageGetDataProvider(inImage));
	UInt8 * m_PixelBuf = (UInt8 *) CFDataGetBytePtr(m_DataRef);

	int length = CFDataGetLength(m_DataRef);
CGImageGetBitsPerComponent(inImage), CGImageGetBitsPerPixel(inImage),CGImageGetBytesPerRow(inImage));
	
	
	for (int index = 0; index < length; index += 4)
	{
		Byte tempR = m_PixelBuf[index + 1];
		Byte tempG = m_PixelBuf[index + 2];
		Byte tempB = m_PixelBuf[index + 3];
		
		int outputRed = level + tempR;
		int outputGreen = level + tempG;
		int outputBlue = level + tempB;
		
		if (outputRed>255) outputRed=255;
		if (outputGreen>255) outputGreen=255;
		if (outputBlue>255) outputBlue=255;
		
		if (outputRed<0) outputRed=0;
		if (outputGreen<0) outputGreen=0;
		if (outputBlue<0) outputBlue=0;
		
		
		m_PixelBuf[index + 1] = outputRed; 
		m_PixelBuf[index + 2] = outputGreen; 
		m_PixelBuf[index + 3] = outputBlue;
		
	}
	
    
	
	ctx = CGBitmapContextCreate(m_PixelBuf,
								CGImageGetWidth( inImage ),
								CGImageGetHeight( inImage ),
								8,
								CGImageGetBytesPerRow( inImage ),
								CGImageGetColorSpace( inImage ),
								kCGImageAlphaPremultipliedFirst );
	
	
	CGImageRef imageRef = CGBitmapContextCreateImage (ctx);
	UIImage* rawImage = [UIImage imageWithCGImage:imageRef];
	
	CGContextRelease(ctx);

	
	CGImageRelease(imageRef); 
	
	CFRelease(m_DataRef);
	

	
    return rawImage; 
	
}

Last edited by dany_dev; 01-13-2010 at 10:22 AM.
dany_dev is offline   Reply With Quote
Old 01-13-2010, 12:02 PM   #3 (permalink)
Registered Member
 
Join Date: Sep 2009
Posts: 96
Dvdkite is on a distinguished road
Default

Quote:
Originally Posted by dany88 View Post
should work.
http://www.iphonedevsdk.com/forum/ip...lter-code.html

Code:
- (UIImage *) brightness{
	
	
	int level= put here an int value that go from -255 to 255;
	
	
	
    CGImageRef inImage = inputImage;   //Input image cgi
	
    CGContextRef ctx;
    
	
	CFDataRef m_DataRef;
	m_DataRef = CGDataProviderCopyData(CGImageGetDataProvider(inImage));
	UInt8 * m_PixelBuf = (UInt8 *) CFDataGetBytePtr(m_DataRef);

	int length = CFDataGetLength(m_DataRef);
CGImageGetBitsPerComponent(inImage), CGImageGetBitsPerPixel(inImage),CGImageGetBytesPerRow(inImage));
	
	
	for (int index = 0; index < length; index += 4)
	{
		Byte tempR = m_PixelBuf[index + 1];
		Byte tempG = m_PixelBuf[index + 2];
		Byte tempB = m_PixelBuf[index + 3];
		
		int outputRed = level + tempR;
		int outputGreen = level + tempG;
		int outputBlue = level + tempB;
		
		if (outputRed>255) outputRed=255;
		if (outputGreen>255) outputGreen=255;
		if (outputBlue>255) outputBlue=255;
		
		if (outputRed<0) outputRed=0;
		if (outputGreen<0) outputGreen=0;
		if (outputBlue<0) outputBlue=0;
		
		
		m_PixelBuf[index + 1] = outputRed; 
		m_PixelBuf[index + 2] = outputGreen; 
		m_PixelBuf[index + 3] = outputBlue;
		
	}
	
    
	
	ctx = CGBitmapContextCreate(m_PixelBuf,
								CGImageGetWidth( inImage ),
								CGImageGetHeight( inImage ),
								8,
								CGImageGetBytesPerRow( inImage ),
								CGImageGetColorSpace( inImage ),
								kCGImageAlphaPremultipliedFirst );
	
	
	CGImageRef imageRef = CGBitmapContextCreateImage (ctx);
	UIImage* rawImage = [UIImage imageWithCGImage:imageRef];
	
	CGContextRelease(ctx);

	
	CGImageRelease(imageRef); 
	
	CFRelease(m_DataRef);
	

	
    return rawImage; 
	
}

Hi Dany ,

Thank you very much to share your code...
I was tryng to test it but compiler gave me an error and I've seen that the RED portion of code above has a missing part of code...
Am I correct??

I really don't know how to adjust it...
:-D

Thank you ,

David
Dvdkite is offline   Reply With Quote
Old 01-14-2010, 02:56 AM   #4 (permalink)
Nuisance Developer
 
Join Date: Jul 2009
Location: Italy
Posts: 4,691
dany_dev is on a distinguished road
Default

Quote:
Originally Posted by Dvdkite View Post
Hi Dany ,

Thank you very much to share your code...
I was tryng to test it but compiler gave me an error and I've seen that the RED portion of code above has a missing part of code...
Am I correct??

I really don't know how to adjust it...
:-D

Thank you ,

David

CGImageRef inImage = inputImage; //Input image cgi

have you replaced inputImage with your cgi image?

for example:
CGImageRef inImage = [myUIimage CGImage];
dany_dev is offline   Reply With Quote
Old 01-14-2010, 04:32 AM   #5 (permalink)
Registered Member
 
Join Date: Sep 2009
Posts: 96
Dvdkite is on a distinguished road
Default

Hi Danny,

Yes I did it as you can see below I have modified the inputimage with an UIImage taken from a UIIMageView called "foto" and I'm also passing the int value as a parameter of method by a UISlider.

Code:
- (UIImage *) brightness:(int)value{
	
	
	int level=value;//; put here an int value that go from -255 to 255;
	
	
	
    CGImageRef inImage = foto.image.CGImage;   //Input image cgi
	
    CGContextRef ctx;
    
	
	CFDataRef m_DataRef;
	m_DataRef = CGDataProviderCopyData(CGImageGetDataProvider(inImage));
	UInt8 * m_PixelBuf = (UInt8 *) CFDataGetBytePtr(m_DataRef);
	
	int length = CFDataGetLength(m_DataRef);
	CGImageGetBitsPerComponent(inImage), CGImageGetBitsPerPixel(inImage),CGImageGetBytesPerRow(inImage));
	
	
	for (int index = 0; index < length; index += 4)
	{
		Byte tempR = m_PixelBuf[index + 1];
		Byte tempG = m_PixelBuf[index + 2];
		Byte tempB = m_PixelBuf[index + 3];
		
		int outputRed = level + tempR;
		int outputGreen = level + tempG;
		int outputBlue = level + tempB;
		
		if (outputRed>255) outputRed=255;
		if (outputGreen>255) outputGreen=255;
		if (outputBlue>255) outputBlue=255;
		
		if (outputRed<0) outputRed=0;
		if (outputGreen<0) outputGreen=0;
		if (outputBlue<0) outputBlue=0;
		
		
		m_PixelBuf[index + 1] = outputRed; 
		m_PixelBuf[index + 2] = outputGreen; 
		m_PixelBuf[index + 3] = outputBlue;
		
	}
	
    
	
	ctx = CGBitmapContextCreate(m_PixelBuf,
								CGImageGetWidth( inImage ),
								CGImageGetHeight( inImage ),
								8,
								CGImageGetBytesPerRow( inImage ),
								CGImageGetColorSpace( inImage ),
								kCGImageAlphaPremultipliedFirst );
	
	
	CGImageRef imageRef = CGBitmapContextCreateImage (ctx);
	//UIImage* rawImage = [UIImage imageWithCGImage:imageRef];
	[foto setImage:[UIImage imageWithCGImage:imageRef]];
	CGContextRelease(ctx);
	
	
	CGImageRelease(imageRef); 
	
	CFRelease(m_DataRef);
	
	
	
   //return rawImage; 
	
}

But there is an error with the sintax. If you see the RED part of code you'll see that it ends with two "))" but the second ")" doesn't have a start... So I suppose that red parts is a part of an expression wrongly deleted with the copy and past process:
Above is:
Code:

	CGImageGetBitsPerComponent(inImage), CGImageGetBitsPerPixel(inImage),CGImageGetBytesPerRow(inImage));
But don't it should be:


**SOMETHING HERE = (** CGImageGetBitsPerComponent(inImage), CGImageGetBitsPerPixel(inImage),CGImageGetBytesPer Row(inImage));


?

With the actual code I can't run it for test....

Thank you !

David
Dvdkite is offline   Reply With Quote
Old 01-14-2010, 05:11 AM   #6 (permalink)
Registered Member
 
Join Date: Nov 2008
Posts: 864
nobre84 is on a distinguished road
Default

Both the pieces of code above use the same logic to increase brightness... They only differ on how they create the new modified UIImage... So I don't think they will be different on how the image looks. I believe the problem could lie on your input values, aren't they too high, or too low ?
Try it a couple times with hardcoded values as 10, 20 , 50 etc to see if the resulting image looks better, then try modifying the UISlider values to match those. Remember that once you reach pixel values >255 or <0, you lose data permanently and cannot go back to your original image appearance.
nobre84 is offline   Reply With Quote
Old 01-14-2010, 08:08 AM   #7 (permalink)
Nuisance Developer
 
Join Date: Jul 2009
Location: Italy
Posts: 4,691
dany_dev is on a distinguished road
Default

Quote:
Originally Posted by Dvdkite View Post
Hi Danny,

Yes I did it as you can see below I have modified the inputimage with an UIImage taken from a UIIMageView called "foto" and I'm also passing the int value as a parameter of method by a UISlider.

Code:
- (UIImage *) brightness:(int)value{
	
	
	int level=value;//; put here an int value that go from -255 to 255;
	
	
	
    CGImageRef inImage = foto.image.CGImage;   //Input image cgi
	
    CGContextRef ctx;
    
	
	CFDataRef m_DataRef;
	m_DataRef = CGDataProviderCopyData(CGImageGetDataProvider(inImage));
	UInt8 * m_PixelBuf = (UInt8 *) CFDataGetBytePtr(m_DataRef);
	
	int length = CFDataGetLength(m_DataRef);
	CGImageGetBitsPerComponent(inImage), CGImageGetBitsPerPixel(inImage),CGImageGetBytesPerRow(inImage));
	
	
	for (int index = 0; index < length; index += 4)
	{
		Byte tempR = m_PixelBuf[index + 1];
		Byte tempG = m_PixelBuf[index + 2];
		Byte tempB = m_PixelBuf[index + 3];
		
		int outputRed = level + tempR;
		int outputGreen = level + tempG;
		int outputBlue = level + tempB;
		
		if (outputRed>255) outputRed=255;
		if (outputGreen>255) outputGreen=255;
		if (outputBlue>255) outputBlue=255;
		
		if (outputRed<0) outputRed=0;
		if (outputGreen<0) outputGreen=0;
		if (outputBlue<0) outputBlue=0;
		
		
		m_PixelBuf[index + 1] = outputRed; 
		m_PixelBuf[index + 2] = outputGreen; 
		m_PixelBuf[index + 3] = outputBlue;
		
	}
	
    
	
	ctx = CGBitmapContextCreate(m_PixelBuf,
								CGImageGetWidth( inImage ),
								CGImageGetHeight( inImage ),
								8,
								CGImageGetBytesPerRow( inImage ),
								CGImageGetColorSpace( inImage ),
								kCGImageAlphaPremultipliedFirst );
	
	
	CGImageRef imageRef = CGBitmapContextCreateImage (ctx);
	//UIImage* rawImage = [UIImage imageWithCGImage:imageRef];
	[foto setImage:[UIImage imageWithCGImage:imageRef]];
	CGContextRelease(ctx);
	
	
	CGImageRelease(imageRef); 
	
	CFRelease(m_DataRef);
	
	
	
   //return rawImage; 
	
}

But there is an error with the sintax. If you see the RED part of code you'll see that it ends with two "))" but the second ")" doesn't have a start... So I suppose that red parts is a part of an expression wrongly deleted with the copy and past process:
Above is:
Code:

	CGImageGetBitsPerComponent(inImage), CGImageGetBitsPerPixel(inImage),CGImageGetBytesPerRow(inImage));
But don't it should be:


**SOMETHING HERE = (** CGImageGetBitsPerComponent(inImage), CGImageGetBitsPerPixel(inImage),CGImageGetBytesPer Row(inImage));


?

With the actual code I can't run it for test....

Thank you !

David
just delete the line, it was for a NSLog output
dany_dev is offline   Reply With Quote
Old 01-14-2010, 08:56 AM   #8 (permalink)
almostfunnydev
iPhone Dev SDK Supporter
 
rocotilos's Avatar
 
Join Date: Oct 2009
Age: 34
Posts: 3,015
rocotilos is on a distinguished road
Default

Quote:
Originally Posted by dany88 View Post
should work.
http://www.iphonedevsdk.com/forum/ip...lter-code.html

Code:
- (UIImage *) brightness{
	
	
	int level= put here an int value that go from -255 to 255;
	
	
	
    CGImageRef inImage = inputImage;   //Input image cgi
	
    CGContextRef ctx;
    
	
	CFDataRef m_DataRef;
	m_DataRef = CGDataProviderCopyData(CGImageGetDataProvider(inImage));
	UInt8 * m_PixelBuf = (UInt8 *) CFDataGetBytePtr(m_DataRef);

	int length = CFDataGetLength(m_DataRef);
CGImageGetBitsPerComponent(inImage), CGImageGetBitsPerPixel(inImage),CGImageGetBytesPerRow(inImage));
	
	
	for (int index = 0; index < length; index += 4)
	{
		Byte tempR = m_PixelBuf[index + 1];
		Byte tempG = m_PixelBuf[index + 2];
		Byte tempB = m_PixelBuf[index + 3];
		
		int outputRed = level + tempR;
		int outputGreen = level + tempG;
		int outputBlue = level + tempB;
		
		if (outputRed>255) outputRed=255;
		if (outputGreen>255) outputGreen=255;
		if (outputBlue>255) outputBlue=255;
		
		if (outputRed<0) outputRed=0;
		if (outputGreen<0) outputGreen=0;
		if (outputBlue<0) outputBlue=0;
		
		
		m_PixelBuf[index + 1] = outputRed; 
		m_PixelBuf[index + 2] = outputGreen; 
		m_PixelBuf[index + 3] = outputBlue;
		
	}
	
    
	
	ctx = CGBitmapContextCreate(m_PixelBuf,
								CGImageGetWidth( inImage ),
								CGImageGetHeight( inImage ),
								8,
								CGImageGetBytesPerRow( inImage ),
								CGImageGetColorSpace( inImage ),
								kCGImageAlphaPremultipliedFirst );
	
	
	CGImageRef imageRef = CGBitmapContextCreateImage (ctx);
	UIImage* rawImage = [UIImage imageWithCGImage:imageRef];
	
	CGContextRelease(ctx);

	
	CGImageRelease(imageRef); 
	
	CFRelease(m_DataRef);
	

	
    return rawImage; 
	
}

Im sorry, but I think what you are doing here:
Quote:
for (int index = 0; index < length; index += 4)
{
Byte tempR = m_PixelBuf[index + 1];
Byte tempG = m_PixelBuf[index + 2];
Byte tempB = m_PixelBuf[index + 3];

int outputRed = level + tempR;
int outputGreen = level + tempG;
int outputBlue = level + tempB;

if (outputRed>255) outputRed=255;
if (outputGreen>255) outputGreen=255;
if (outputBlue>255) outputBlue=255;

if (outputRed<0) outputRed=0;
if (outputGreen<0) outputGreen=0;
if (outputBlue<0) outputBlue=0;


m_PixelBuf[index + 1] = outputRed;
m_PixelBuf[index + 2] = outputGreen;
m_PixelBuf[index + 3] = outputBlue;

}
And what DvdKite posted:
Quote:
for(int i=0;i<3;i++){
if(data[index+i]+value<0){
data[index+i]=0;
}else{
if(data[index+i]+value>255){
data[index+i]=255;
}else{
data[index+i]+=value;
}
}
}

is EXACTLY the same thing no? (just one in a loop and the other isnot).

Im working on this too at themoment.. will put in my filters here once completed.
rocotilos is offline   Reply With Quote
Old 01-14-2010, 09:48 AM   #9 (permalink)
Registered Member
 
Join Date: Sep 2009
Posts: 96
Dvdkite is on a distinguished road
Default

rocotilos:

Thank you!
Any code will be appreciated for testing

nobre84:

I've tryed to modify the scale of uislader with +/-255 then descreased the range to +/-100, then +/-50 and finally +/-25....
I don't know why but the image don't modify the brightness correctly...



Now I've tryed the code on a RGB normal coloured image...
But I need to made possible the BRIGHTNESS regulation on a GRAYSCALE image so I was thinking about a very dirty way...

what About to put two UIImageView, One totally white and the other totally pure black and then with positive value of the slider set the transparency of the white imageview and with negative value set the black imageview....

I've tryed on photoshop with the same image 2 test:
1) put a white level over the photo and set the transparency of the lavel at 20%
2) modify the Brightness of the photo directly with ctrl+U at a level of 20

that'exactly the same result... also with other percentage.

What do you think about it?
Once done to save the result for me it will be enough a screenshot taken by code programmatically....

Do you think I can obtain the same result??? (remember that I'm using grayscale image)....


BTW:
An amazing solution will be use the code in GLImageProcessig sample code from apple... but it's reallt really to complicated for me to understand...
And also I don't have Idea on how use that code with a UIImage that is in a ImageView ...
Dvdkite is offline   Reply With Quote
Old 01-14-2010, 09:58 AM   #10 (permalink)
Nuisance Developer
 
Join Date: Jul 2009
Location: Italy
Posts: 4,691
dany_dev is on a distinguished road
Default

Quote:
Originally Posted by rocotilos View Post
Im sorry, but I think what you are doing here:


And what DvdKite posted:



is EXACTLY the same thing no? (just one in a loop and the other isnot).

Im working on this too at themoment.. will put in my filters here once completed.
he said that his code not work, so i posted my working code that i use on one of my app
i hurry, so i take the code, deleted few lines (that i use for other things) and posted (infact i not deleted the line that get error to nobre)
really i not red his code

ps: scuse my english

However when i have 10 minutes i will read all and try to resolve it.

Last edited by dany_dev; 01-14-2010 at 10:06 AM.
dany_dev is offline   Reply With Quote
Old 01-14-2010, 10:22 AM   #11 (permalink)
almostfunnydev
iPhone Dev SDK Supporter
 
rocotilos's Avatar
 
Join Date: Oct 2009
Age: 34
Posts: 3,015
rocotilos is on a distinguished road
Default

But both of the code give the same result.. adjusting the brightness not really working on a color image. Because you are just saturating each colors in the the pixel till reach other 0 or 255.

Im still studying this.. if anybody else got it first, pls post... thanks.
rocotilos is offline   Reply With Quote
Old 01-14-2010, 10:48 AM   #12 (permalink)
almostfunnydev
iPhone Dev SDK Supporter
 
rocotilos's Avatar
 
Join Date: Oct 2009
Age: 34
Posts: 3,015
rocotilos is on a distinguished road
Default DONE!

Ok, i posted the correct brightness code in the sharing filter thread.

Check it out.
it works even for color images. From color -> dark or color -> total bright (white)
rocotilos is offline   Reply With Quote
Old 06-03-2010, 09:00 AM   #13 (permalink)
Registered Member
 
Join Date: Nov 2008
Posts: 31
maskedr is on a distinguished road
Default

i know this thread is dead for some time but i tried this code and i receive this kind of errors:

2010-06-03 16:44:29.594 mapTest2[1409:207] len 4177920
2010-06-03 16:44:29.596 mapTest2[1409:207] width=1440, height=960
2010-06-03 16:44:29.597 mapTest2[1409:207] 1=8, 2=24, 3=4352
Thu Jun 3 16:44:29 Bigs-MacBook.local mapTest2[1409] <Error>: CGBitmapContextCreate: invalid data bytes/row: should be at least 5760 for 8 integer bits/component, 3 components, kCGImageAlphaPremultipliedFirst.
Thu Jun 3 16:44:29 Bigs-MacBook.local mapTest2[1409] <Error>: CGBitmapContextCreateImage: invalid context


Please Help!
maskedr is offline   Reply With Quote
Reply

Bookmarks

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On



» Advertisements
» Online Users: 336
12 members and 324 guests
2Apps1Day, akacaj, Domele, GraffitiCircus, michelle, NetGuru, NSString, Paul Slocum, SLIC, Sloshmonster, soohyun, v1n2e7t
Most users ever online was 1,387, 04-10-2012 at 04:21 AM.
» Stats
Members: 175,650
Threads: 94,114
Posts: 402,886
Top Poster: BrianSlick (7,990)
Welcome to our newest member, soohyun
Powered by vBadvanced CMPS v3.1.0

All times are GMT -5. The time now is 09:57 PM.
Powered by vBulletin® Version 3.8.0
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.3.0