UIImage to Hex Conversion в Objective C

У меня есть следующее С# -кодирование для преобразования загруженного растрового изображения в Hex. Мне нужно следовать алгоритму, чтобы получить ip с той же целью в объекте C. Предположим, у меня есть UIImageView с изображением, выбранным из галереи изображений. Мне нужно преобразовать выбранное изображение в Hex и записать в текстовый файл.

Кто-то, пожалуйста, дайте мне помощь, чтобы преобразовать этот код в Objective C. У меня есть некоторые знания в области разработки IOS, но у меня мало знаний в обработке изображений.

Это мой код,

Bitmap bm1 = (Bitmap)pictureBox1.Image;

 int PictureWidth = pictureBox1.Image.Width;
 int PictureHeight = pictureBox1.Image.Height;
 int PictureX;
 int PictureY;

 int NVImageWidth;
 int NVImageHeight;

 NVImageWidth = PictureWidth;
 NVImageHeight = PictureHeight;

 int Quotient;
 int Remainder;
 int wp;

 wp = 0;

 StreamWriter sw = new StreamWriter("D:\\Test.txt");

 for (PictureX = 0; PictureX <= PictureWidth - 1; PictureX++)
 {
 for (PictureY = 0; PictureY <= NVImageHeight - 1; PictureY++)
 {
 Color c1 = bm1.GetPixel(PictureX, PictureY);

 if ((PictureY % 8) == 0)
 {
 wp = 0;
 wp = (c1.G!=0) ? 0 : 1;
 }
 else if ((PictureY % 8) == 7)
 {
 wp = (wp << 1) | ((c1.G!=0) ? 0 : 1);
 sw.Write(string.Format("%{0:x2}", wp));
 }
 else
 {
 wp = (wp << 1) | ((c1.G!=0) ? 0 : 1);
 }
 }
 }

 sw.Close();
1 ответ

У меня есть предложение:

Сначала преобразуйте UIImage в NSData. Затем конвертируйте NSData в шестнадцатеричный.

Так, например,

//converting to hexadecimal
 -(NSString*)hexRepresentationWithSpaces_AS:(BOOL)spaces
 {
 const unsigned char* bytes = (const unsigned char*)[self bytes];
 ********** nbBytes = [self length];
 //If spaces is true, insert a space every this many input bytes (twice this many output characters).
 static const ********** spaceEveryThisManyBytes = 4UL;
 //If spaces is true, insert a line-break instead of a space every this many spaces.
 static const ********** lineBreakEveryThisManySpaces = 4UL;
 const ********** lineBreakEveryThisManyBytes = spaceEveryThisManyBytes * lineBreakEveryThisManySpaces;
 ********** strLen = 2*nbBytes + (spaces ? nbBytes/spaceEveryThisManyBytes : 0);

 NSMutableString* hex = [[NSMutableString alloc] initWithCapacity:strLen];
 for(********** i=0; i

licensed under cc by-sa 3.0 with attribution.