У меня есть изображение (которое является спрайтом). Я храню его в массиве байтов. Я хотел бы извлечь только байты, относящиеся к определенному месту и размеру в этом массиве байтов, чтобы я мог создать новое изображение. В принципе, урожай. Я использую 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];
}
}
}
HTTP : //stackoverflow.com/questions/9688454/cropping-an-area-from-bitmapdata-with-c-sharp#answer-9691388 –
@Vaibs_Cool Привет, спасибо за ссылку. Я посмотрел на это прошлой ночью, но изображение получилось черно-белым. Я смешался с пиксельным форматом, но получил сообщение об ошибке только для чтения. Очевидно, он очень устал прошлой ночью, потому что я просто сделал простую копию и вставлю, и это работает. Итак, я думаю, я немного толстый. Вы заслуживаете «тика», потому что заставили меня взглянуть на него. спасибо –