Брр ... JPEGImage.LoadFromStream(ST); (JPEGImage:TFPMemoryImage) достал ! Нормально читать поток (MemoryStream) с произвольной позиции не хочет совершенно (упроно читает только первую картинку в потоке) причем закидон где-то в TFPReaderJPEG .(Пробовал сделать "заплатку" но тут этот фокус не прошел)
Так что пока плюнул и написал простой конвертер Jpg2Bmp...
(он работает но с потерей универсальности TFPMemoryImage)
- Код: Выделить всё
Function Jpg2Bmp( jpg:TStream ):TBitmap;
var b:TBitmap;
j:TJPEGImage;
begin
result := nil;
try
j :=TJPEGImage.Create;
try
j.LoadFromStream(jpg);
b := TBitmap.Create;
try
b.Assign(j);
except
FreeAndNil(B);
end;
finally
j.Free;
end;
Result:=B;
except
Result := Nil;
end;
end;
Зы
Вообщем пока я все еще пытаюсь протащить контейнер из "общего " MemoryStream, но уже начинаю сомневаться "так ли это полезно как красиво" .
Добавлено спустя 18 минут 45 секунд:sts писал(а):раньше, как тока появились многоядерные процы, максимально эффективное к-во потоков было = к-во ядер минус одно для операционной системы, последние лет 10, минус два ядра, один для IO, другой для менеджера потоков.
Раньше я тоже думал примерно так-же и постоянно пытался подстроится под количество "физических" потоков и ядер .
Но потом выяснилось что использование заметно большего количества "виртуальных потоков" ускоряет работу "распараллеленных" алгоритмов более чем успешно . (Что очень наглядно видно и на примере моей "тестовой платформы" )