Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Media";
Текущий архив: 2006.08.06;
Скачать: [xml.tar.bz2];

Вниз

Определить 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 вся ветка

Форум: "Media";
Текущий архив: 2006.08.06;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.017 c
2-1152699903
zdm
2006-07-12 14:25
2006.08.06
string


4-1145337676
DIR3ct0r
2006-04-18 09:21
2006.08.06
Определение сезона (зима/лето) по дате


2-1151678499
mahab
2006-06-30 18:41
2006.08.06
irda


2-1153252646
crazy_corpse
2006-07-18 23:57
2006.08.06
Java


15-1152095029
igrek23
2006-07-05 14:23
2006.08.06
компоненты для работы с топографическими картами





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский