|
Вопрос # 1 979/ вопрос открыт / |
|
Здравствуйте, эксперты!
Доброго времени суток!
Как достать изображение из файла? Файл прикреплен
К вопросу прикреплён файл. Загрузить » (срок хранения: 60 дней с момента отправки вопроса)
Примечание #1 (8 октября 2008, 15:01): Бетер А В - Это фамилия пациента
Примечание #2 (9 октября 2008, 11:51):
 |
Вопрос задал: seryoga (статус: 1-ый класс)
Вопрос отправлен: 8 октября 2008, 14:04
Состояние вопроса: открыт, ответов: 1.
|
Ответ #1. Отвечает эксперт: ANBsoft
Здравствуйте, seryoga!
Лень оптимизировать и ускорять, если Вам нужно - сделаете (а Вадим К. подскажет как).
Возможно цвет идет более чем 8 бит - лишнее отбросил.
Установите на форме TImage размером 1024х1024.
Даю текст загрузчика картинки:
Var X,Y:Integer;
FF:File of Byte;
b:Byte;
begin
AssignFile(ff,'Single00.img');
Reset(ff);
For X:=1 to 744 do
Read(ff,b); //Пропускаем заголовок
X:=1;
Y:=1;
while not eof(ff) do begin
Read(ff,b);
Image1.Canvas.Pixels[X,Y]:=RGB(b,b,b);
Inc(X);
if x>=946 then begin
x:=0;
Inc(Y);
end;
Read(ff,b);
end;
CloseFile(ff);
end;
 |
Ответ отправил: ANBsoft (статус: Студент)
Время отправки: 8 октября 2008, 17:16
Оценка за ответ: 5
Комментарий к оценке: спасибо и на этом но в общем ужастно
|
Мини-форум вопроса
Всего сообщений: 46; последнее сообщение — 9 октября 2008, 21:05; участников в обсуждении: 3.
Страницы: [« Предыдущая] [1] [2] [3]
|
ANBsoft (статус: Студент), 8 октября 2008, 18:49 [#41]:
разобрался, сейчас сделаю
|
|
ANBsoft (статус: Студент), 8 октября 2008, 19:59 [#42]:
Замороченный случай, разрешение цвета 13 бит (по крайней мере в этом файле), с 16 битным цветом работать не приходилось, поэтому создал TIF файл в фотошопе (чтобы не разбираться с его структурой) и вписываю в него Ваши данные.
!!! Не претендую на то, что это оптимальный вариант, но зато картинка нормально видна, дальше разбирайтесь сами.
http://letitbit.net/download/8b8501556149/1.ZIP.html
положите рядом с программой этот файл, выполните код, в этом файле получится готовая картинка
Код для преобразования:
Var X,Y:Integer;
F1,F2:File of word;
w:Word;
b:Byte;
i:Integer;
begin
AssignFile(F1,'Single00.img');
Reset(F1);
AssignFile(F2,'1.tif');
FileMode:=2;
Reset(F2);
Seek(F1,372);
Seek(F2,9419);
X:=1;
Y:=1;
while not eof(F1) do begin
Read(F1,w);
w:=w*8+20000; //+20000 - определяет яркость картинки
Write(F2,w);
end;
CloseFile(F1);
CloseFile(F2);
end;
|
|
ANBsoft (статус: Студент), 8 октября 2008, 20:15 [#43]:
И последний вариант, простой, но не совсем корректный:
Var X,Y:Integer;
FF:File of Word;
w:Word;
b:Byte;
begin
AssignFile(ff,'Single00.img');
Reset(ff);
Seek(ff,744 div 2);
X:=1;
Y:=1;
while not eof(ff) do begin
Read(ff,w);
w:=w shr 3; //Корректное число 5, но при нем все темно, 4 лучше, 3 в этом случае есть искажения, но принцип понятен
if w>255 then w:=255;
b:=w;
Image1.Canvas.Pixels[X,Y]:=RGB(b,b,b);
Inc(X);
if x>=946 then begin
x:=0;
Inc(Y);
end;
end;
CloseFile(ff);
end;
|
|
seryoga (статус: 1-ый класс), 9 октября 2008, 11:52 [#45]:
в каком поле хранятся атрибуты файла типа размер??
|
|
ANBsoft (статус: Студент), 9 октября 2008, 21:05 [#46]:
Помогли последние доработки с качеством файла?
Что это за новый файл, откуда он, что в нем?
Судя по виду, в нем неправильно выбрана ширина картинки.
А вообще для этого JPG лучше не использовать, лучше TIF или на худой конец BMP, а JPG сжатие с потерями.
|
Страницы: [« Предыдущая] [1] [2] [3]
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|