Модераторы: Snowy, Alexeis, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Изменить разрешние картинки, или я что-то путаю? 
:(
    Опции темы
XAKEPEHOK
Дата 18.1.2009, 20:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 103
Регистрация: 18.10.2006
Где: Matrix

Репутация: нет
Всего: 0



Доброго времени суток! У меня возникла проблема, в которой у меня даже больше теоретические проблемы.
У меня имеется картинка *.bmp. Мне нужно изменить ее разрешение в ppi до определенного, чтобы в дальнейшем вывести на печать.
Как мне это сделать? Вот что нашел в дркб

Код

type
BITMAPFILEHEADER = packed record
   bfType:WORD; //Сигнатура BM
   bfSize:DWORD; //Размер файла
   bfReserved1:WORD; //Зарезервировано, всегда 0
   bfReserved2:WORD; //Тот же случай
   bfOffBits:DWORD; //Смещение(в байтах) от заголовка(его размер)
end;
 
BITMAPINFOHEADER = packed record
   biSize:DWORD; //Число байтов, необходимых этой структуре
   biWidth:LONGWORD; //Ширина
   biHeight:LONGWORD; //Высота
   biPlanes:WORD; //Число плоскостей устройства. =1
   biBitCount:WORD; //Число битов на пиксел. В примере =24
   biCompression:DWORD; //Тип сжатия. В примере =0(т.е. нет)
   biSizeImage:DWORD; //Размер изобр. 0, если нет сжатия
   biXPelsPerMeter:LONGWORD; //Горизонтальное разрешение (пиксел/м)
   biYPelsPerMeter:LONGWORD; //Вертикальное разрешение (пиксел/м)
   biClrUsed:DWORD; //Используемые цвета. 0 - исп. все
   biClrImportant:DWORD; //Важные цвета. 0 - все важны
end;
//Если хотите знать больше, смотрите SDK->Поиск->BMP->Bitmap Storage
implementation 

{$R *.dfm} 

procedure FileToBMP(FileName:String;w,h:Integer);
var
bmp,aFile:TStream;
begin
bmp:=TFileStream.Create(FileName+'.bmp',fmCreate);
aFile:=TFileStream.Create(FileName,fmOpenRead);
 

bf.bfType:=$4D42; //= BM
bf.bfReserved1:=0;
bf.bfReserved2:=0;
bf.bfOffBits:=SizeOf(BITMAPFILEHEADER)+SizeOf(BITMAPINFOHEADER); 

bi.biSize:=SizeOf(BITMAPINFOHEADER);
bi.biWidth:=w;
bi.biHeight:=h;
bi.biPlanes:=1;
bi.biBitCount:=24;
bi.biCompression:=0;
bi.biSizeImage:=w*h*3;//24бита = 3байта
//остальное в этом примере = 0
bi.biXPelsPerMeter:=0;
bi.biYPelsPerMeter:=0;
bi.biClrUsed:=0;
bi.biClrImportant:=0;
 

bf.bfSize:=bf.bfOffBits+bi.biSizeImage;
//запись заголовка
bmp.Write(bf,SizeOf(BITMAPFILEHEADER));
bmp.Write(bi,SizeOf(BITMAPINFOHEADER));
//запись точек(кол-во байтов = bi.biSizeImage)
bmp.CopyFrom(aFile,bi.biSizeImage); 

bmp.Free;
aFile.Free;
 

end;


но это то или нет? Во первых у меня это даже не компилится. Если это то, то можно пример использования?
Я вообще запутался со всеми этими dpi и ppi
PM ICQ   Вверх
~FoX~
Дата 31.1.2009, 11:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЕ рыжий!!!
****


Профиль
Группа: Участник Клуба
Сообщений: 2819
Регистрация: 8.10.2003
Где: Зеленоград

Репутация: 2
Всего: 68



ppi - количество пихелей на дюйм
dpi - точек на дюйм... DPI*Nc = 1 PPI, где Nc количество цветов используемых в картинки...

Так использоваться этот пример....Ты же описал типы, а приминить их забыл  smile 
Код

type
BITMAPFILEHEADER = packed record
   bfType:WORD; //Сигнатура BM
   bfSize:DWORD; //Размер файла
   bfReserved1:WORD; //Зарезервировано, всегда 0
   bfReserved2:WORD; //Тот же случай
   bfOffBits:DWORD; //Смещение(в байтах) от заголовка(его размер)
end;

BITMAPINFOHEADER = packed record
   biSize:DWORD; //Число байтов, необходимых этой структуре
   biWidth:LONGWORD; //Ширина
   biHeight:LONGWORD; //Высота
   biPlanes:WORD; //Число плоскостей устройства. =1
   biBitCount:WORD; //Число битов на пиксел. В примере =24
   biCompression:DWORD; //Тип сжатия. В примере =0(т.е. нет)
   biSizeImage:DWORD; //Размер изобр. 0, если нет сжатия
   biXPelsPerMeter:LONGWORD; //Горизонтальное разрешение (пиксел/м)
   biYPelsPerMeter:LONGWORD; //Вертикальное разрешение (пиксел/м)
   biClrUsed:DWORD; //Используемые цвета. 0 - исп. все
   biClrImportant:DWORD; //Важные цвета. 0 - все важны
end;


implementation

{$R *.dfm}


procedure FileToBMP(FileName:String;w,h:Integer);
var
  bmp,aFile:TStream;
  bf: BITMAPFILEHEADER; // Вот это надо добавить
  bi: BITMAPINFOHEADER; // И вот это тоже
begin
  bmp:=TFileStream.Create(FileName+'.bmp',fmCreate);
  aFile:=TFileStream.Create(FileName,fmOpenRead);

  bf.bfType:=$4D42; //= BM
  bf.bfReserved1:=0;
  bf.bfReserved2:=0;
  bf.bfOffBits:=SizeOf(BITMAPFILEHEADER)+SizeOf(BITMAPINFOHEADER);
  bi.biSize:=SizeOf(BITMAPINFOHEADER);
  bi.biWidth:=w;
  bi.biHeight:=h;
  bi.biPlanes:=1;
  bi.biBitCount:=24;
  bi.biCompression:=0;
  bi.biSizeImage:=w*h*3;//24бита = 3байта
  //остальное в этом примере = 0
  bi.biXPelsPerMeter:=0;
  bi.biYPelsPerMeter:=0;
  bi.biClrUsed:=0;
  bi.biClrImportant:=0;
  bf.bfSize:=bf.bfOffBits+bi.biSizeImage;
  //запись заголовка
  bmp.Write(bf,SizeOf(BITMAPFILEHEADER));
  bmp.Write(bi,SizeOf(BITMAPINFOHEADER));
  //запись точек(кол-во байтов = bi.biSizeImage)
  bmp.CopyFrom(aFile,bi.biSizeImage);
  bmp.Free;
  aFile.Free;
end;


procedure TForm1.Button1Click(Sender: TObject);
begin
  FileToBMP('c:\1.bmp', 1280, 960);
end;

Не очень понятно тебе нужно менять именно разрешение или размер...


--------------------
user posted image
…множественность никогда не следует полагать без необходимости…
PM MAIL WWW ICQ Jabber   Вверх
XAKEPEHOK
Дата 31.1.2009, 11:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 103
Регистрация: 18.10.2006
Где: Matrix

Репутация: нет
Всего: 0



Спасибо.
Мне нужно в итоге распечатать картинку с заданным разрешением в ppi
PM ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Звук, графика и видео"
Girder
Snowy
Alexeis

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делится вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • По вопросам разработки игр стоит заглянуть сюда

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Girder, Snowy.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Звук, графика и видео | Следующая тема »


 




[ Время генерации скрипта: 0.0478 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.