Главная страница
    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.012 c
2-1153402661
Вовка
2006-07-20 17:37
2006.08.06
Как узнать числовое значение CPU Usage (%) ?


9-1131923007
Ricks
2005-11-14 02:03
2006.08.06
Огонь


3-1148975665
ksa2002
2006-05-30 11:54
2006.08.06
Текущая дата в InterBase


2-1153077301
dj0n
2006-07-16 23:15
2006.08.06
Как открыть доступ на таблицу InterBase!


15-1152267147
sniknik
2006-07-07 14:12
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский