كيفية NSLog بكسل RGB من UIImage?
سؤال
أريد فقط أن:
1) نسخ البيانات بكسل.
2) تكرار وتعديل كل بكسل (أرني كيف NSLog على ARGB القيم 255)
3) إنشاء UIImage من جديد بكسل البيانات
لا يمكن معرفة التفاصيل المروعة إذا كان شخص ما يمكن فقط قل لي كيف NSLog RGBA قيم بكسل كما 255.كيف يمكنني تعديل التعليمات البرمجية التالية إلى فعل هذا ؟ أن تكون محددة من فضلك!
-(UIImage*)modifyPixels:(UIImage*)originalImage
{
NSData* pixelData = (NSData*)CGDataProviderCopyData(CGImageGetDataProvider(originalImage.CGImage));
uint myLength = [pixelData length];
for(int i = 0; i < myLength; i += 4) {
//CHANGE PIXELS HERE
/*
Sidenote: Just show me how to NSLog them
*/
//Example:
//NSLog(@"Alpha 255-Value is: %u", data[i]);
//NSLog(@"Red 255-Value is: %u", data[i+1]);
//NSLog(@"Green 255-Value is: %u", data[i+2]);
//NSLog(@"Blue 255-Value is: %u", data[i+3]);
}
//CREATE NEW UIIMAGE (newImage) HERE
return newImage;
}
المحلول
هل هذا اتجاه العمل بالنسبة لك ؟ أود الحصول على بيانات بكسل مثل هذا:
UInt32 *pixels = CGBitmapContextGetData( ctx );
#define getRed(p) ((p) & 0x000000FF)
#define getGreen(p) ((p) & 0x0000FF00) >> 8
#define getBlue(p) ((p) & 0x00FF0000) >> 16
// display RGB values from the 11th pixel
NSLog(@"Red: %d, Green: %d, Blue: %d", getRed(pixels[10]), getGreen(pixels[10]), getBlue(pixels[10]));
نصائح أخرى
إذا كنت تريد أن ترى الصورة ، يمكنك استخدام فلوران Pillet هو NSLogger:https://github.com/fpillet/NSLogger
الفكرة تبدأ NSLogger العميل على سطح المكتب ومن ثم في التطبيق الخاص بك يمكنك وضع هذا نحو الأعلى:
#import "LoggerClient.h"
و في modifyPixels
طريقة يمكنك أن تفعل شيئا مثل هذا:
LogImageData(@"RexOnRoids", // Any identifier to go along with the log
0, // Log level
newImage.size.width, // Image width
newImage.size.height, // Image height
UIImagePNGRepresentation(newImage)); // Image as PNG
بدء تشغيل عميل على سطح المكتب الخاص بك ثم قم بتشغيل التطبيق على اي فون الخاص بك و سترى الصور الحقيقية تظهر في العميل.مفيد جدا لتصحيح صورة مشاكل مثل التقليب, الدورية, الألوان, ألفا, الخ.