Оригинальный сценарий
Я неправильно понял мой собственный код, и этот сценарий недействителен.
Это выход из моей обычной рубки, поэтому яЯ собираюсь объяснить, как могу.
У меня установлен код цвета.Пример:
int R = 255;
int G = 255;
int B = 255;
И у меня есть много больших изображений, где мне нужно проверить цвет пикселей в определенных наборах координат по сравнению с заданным пользователем цветом.Я могу успешно получить byte*
любого пикселя в изображении и получить ожидаемые значения.
Я делаю это, используя BitmapData
из Bitmap.LockBits(...)
.Насколько я понимаю, блокировка будет важна с точки зрения производительности.Там будет очень много случаев использования этого в очень больших коллекциях изображений, поэтому производительность является основным фактором.
По тем же причинам, связанным с производительностью, я стараюсь не преобразовывать извлеченные цвета пикселей, представленные небезопасными байтами, в целые числа - я бы предпочел преобразовать свой int в байт один раз и использовать его для вероятных миллионовпикселей это будет выполняться каждый раз при вызове.
Однако ... Я не могу понять, как получить любое из моих пользовательских целых чисел в небезопасный байт (byte*
) и сравнить его с небезопасным байтом, полученным из пикселя.
Небезопасный байт (byte*
) был 8-битным указателем данных пикселя (по крайней мере, так я его понимаю), но я получаю отдельные цвета как обычные старые байты.
byte* pixel = //value here pulled from image;
pixel[2] //red value byte
pixel[1] //green value byte
pixel[0] //blue value byte
Так что мне не нужно конвертировать мои int
s в небезопасные байты ... указатели? ..., просто Converter.ToByte(myInt)
.
Реальный вопрос
Но так как я думаю, что это все еще возможно действительный вопрос вне моего сценария, я собираюсь оставить эту часть для кого-тоответить и, надеюсь, помочь кому-нибудь в будущем:
Как вы берете любой заданный int
в C # и сравниваете его с указателем «небезопасный байт» byte*
?