Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.08.06;
Скачать: CL | DM;

Вниз

Определить DPI у JPEG-а   Найти похожие ветки 

 
DelphiFan   (2006-02-06 13:41) [0]

Странная вещь получается.
Определяю DPI у JPEG-а по известной процедуре, она говорит, что DPI = 120.

Если посмотреть на свойства картинки через Проводник, то говорится, что DPI = 96 (у меня есть мысль, что это DPI монитора).

Есть ли 100-процентный способ узнать DPI у картинки?


 
DelphiFan   (2006-02-06 14:11) [1]

Пользуюсь такими процедурами:

procedure GetResJpg(JPGFile: string);
const
 BufferSize = 50;
var
 Buffer: string;
 Index: integer;
 FileStream: TFileStream;
 DP: Byte;
begin
 FileStream := TFileStream.Create(JPGFile, fmOpenReadWrite);
 try
   SetLength(Buffer, BufferSize);
   FileStream.Read(Buffer[1], BufferSize);
   Index := Pos("JFIF" + #$00, Buffer);
   if Index > 0 then begin
     FileStream.Seek(Index + 6, soFromBeginning);
     FileStream.Read(DP, 1);
     case DP of
       1: Measure := "DPI"; //Dots Per Inch
       2: Measure := "DPC"; //Dots Per Cm.
     end;
     FileStream.Read(HorzRes, 2); // x axis
     HorzRes := Swap(HorzRes);
     FileStream.Read(VertRes, 2); // y axis
     VertRes := Swap(VertRes);
   end;
 finally
   FileStream.Free;
 end;
end;

procedure SetResJpg(name: string; dpix, dpiy: Integer);
const
 BufferSize = 50;
 DPI = 1; //inch
 DPC = 2; //cm
var
 Buffer: string;
 index: INTEGER;
 FileStream: TFileStream;
 xResolution: WORD;
 yResolution: WORD;
 _type: Byte;
begin
 FileStream := TFileStream.Create(name, fmOpenReadWrite);
 try
   SetLength(Buffer, BufferSize);
   FileStream.Read(buffer[1], BufferSize);
   index := POS("JFIF" + #$00, buffer);
   if index > 0 then begin
     FileStream.Seek(index + 6, soFromBeginning);
     _type := DPI;
     FileStream.write(_type, 1);
     xresolution := swap(dpix);
     FileStream.write(xresolution, 2);
     yresolution := swap(dpiy);
     FileStream.write(yresolution, 2);
   end;
 finally
   FileStream.Free;
 end;
end;


 
DelphiFan   (2006-02-09 14:20) [2]

Здесь есть шанс получить ответ?


 
Jeer ©   (2006-02-09 15:57) [3]

Файл изображения не может быть привязан заранее к физ.параметрам устройства отображения (монитор, принтер и тп).
Отсюда и исходи.


 
Дмитрий Белькевич ©   (2006-02-11 16:02) [4]


> Файл изображения не может быть привязан заранее к физ.параметрам
> устройства отображения (монитор, принтер и тп).


Случаи всякие бывают.


> Есть ли 100-процентный способ узнать DPI у картинки?


Смотри формат jpeg. Если в файле есть привязка к физическим точкам, думаю, это будет описано.



Страницы: 1 вся ветка

Текущий архив: 2006.08.06;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.036 c
8-1139822476
AlexeyMir
2006-02-13 12:21
2006.08.06
Подскажите как быстро записать CD в wave, как ето делает AudioGra


2-1152855604
pushkin42
2006-07-14 09:40
2006.08.06
Совместимость NT систем???


3-1148858671
x-relax
2006-05-29 03:24
2006.08.06
Поле Time Paradox, SQL запрос


15-1152498011
Мазут Береговой
2006-07-10 06:20
2006.08.06
Не были славяне безграмотными!


15-1151130951
IMHO
2006-06-24 10:35
2006.08.06
Взрыв ноутбука на конференции в Японии