2013-10-02 4 views
0

У меня есть изображение (которое является спрайтом). Я храню его в массиве байтов. Я хотел бы извлечь только байты, относящиеся к определенному месту и размеру в этом массиве байтов, чтобы я мог создать новое изображение. В принципе, урожай. Я использую C# и compact cf. Я мог бы использовать get pixel и сохранять каждое значение в байтовый массив, а затем «читать» часть, которую мне интересно. Я знаю, что могу использовать lockbitmap, чтобы сделать это быстрее. Я бы обычно использовал Aforge и/или Emgu, но, как я сказал, я использую компактный cf framework 2.Обрезать изображение из массива байтов

Мне были бы интересны любые известные способы сделать это.

Благодаря

Дополнительно. Следуя приведенной ниже ссылке, я хотел бы узнать, есть ли альтернатива (например, буферная копия) для этой итеративной части кода?

//Iterate the selected area of the original image, and the full area of the new image 
for (int i = 0; i < height; i++) 
{ 
for (int j = 0; j < width * BPP; j += BPP) 
{ 
int origIndex = (startX * rawOriginal.Stride) + (i * rawOriginal.Stride) + (startY * BPP) + (j); 
int croppedIndex = (i * width * BPP) + (j); 

//copy data: once for each channel 
for (int k = 0; k < BPP; k++) 
{ 
croppedBytes[croppedIndex + k] = origBytes[origIndex + k]; 
} 
} 
} 
+1

HTTP : //stackoverflow.com/questions/9688454/cropping-an-area-from-bitmapdata-with-c-sharp#answer-9691388 –

+0

@Vaibs_Cool Привет, спасибо за ссылку. Я посмотрел на это прошлой ночью, но изображение получилось черно-белым. Я смешался с пиксельным форматом, но получил сообщение об ошибке только для чтения. Очевидно, он очень устал прошлой ночью, потому что я просто сделал простую копию и вставлю, и это работает. Итак, я думаю, я немного толстый. Вы заслуживаете «тика», потому что заставили меня взглянуть на него. спасибо –

ответ

1

У меня есть еще несколько ссылок для вас

Попробуйте, если вы обнаружили, что решение или поможет вам в любом случае

1) http://www.codeproject.com/Articles/33838/Image-Processing-using-C

2) http://codenicely.blogspot.in/2012/03/how-to-crop-image-in-c.html

+0

Спасибо за дополнительные ссылки. Я посмотрел на них раньше, но мне нужно напрямую работать с данными байта. Причина в том, что я использую очень большой спрайт, который даст мне исключение из памяти на мобильном устройстве. Итак, поток состоит в том, что на моем Сервере есть большое изображение. Он отправляется устройству в виде байтового массива. Затем я извлекаю изображения, которые хочу динамически. –

+0

ookkk good даст фрагменты кода, если я получу. –

+0

Спасибо, я буду делать то же сообщение назад .. –

Смежные вопросы