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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Изменение размеров картинки, в JPEG формате 
:(
    Опции темы
CODARZ
  Дата 6.12.2003, 20:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Как посредством Delphi можно изменить размеры картинки
так сказать на лету,
т.е. например была картинка 1024x768, а стала 400x300?

Это сообщение отредактировал(а) CODARZ - 6.12.2003, 20:01
PM MAIL WWW ICQ   Вверх
<Spawn>
Дата 6.12.2003, 22:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Око кары:)
****


Профиль
Группа: Экс. модератор
Сообщений: 2776
Регистрация: 29.1.2003
Где: Екатеринбург

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



Может так:
1) Загружаешь картинку;
2)Делаешь ей нужный StretchBlt;
3)Сохраняешь туда же.


--------------------
"Для некоторых людей программирование является такой же внутренней потребностью, подобно тому, как коровы дают молоко, или писатели стремятся писать" - Николай Безруков.
PM MAIL ICQ   Вверх
.RADIX
Дата 6.12.2003, 22:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Какое конкретно изменение ? Масштабирование или обрезание краёв ?


--------------------
ASM Forever
PM MAIL   Вверх
dr.ZmeY
Дата 7.12.2003, 16:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Политолог
****


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

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



Код

...
 Form1.Canvas.CopyRect(Bounds(0, 0, 400, 300), Form1.Canvas,Bounds(0, 0, 1024, 768));
...

Но это хреново.. лучше брать несколько соседних пикселей, н/р разбить изображение на квадраты 4х4 (уменьшить в 4 раза), ну в зависимости от того масштаба на который ты хочешь уменьшить, и найти средний цвет этого квадрата...
Код

...
var
 x, y: integer;
 i, j: integer;
 r, g, b: integer;
...
 for y := 0 to 300 do begin
   for x := 0 to 400 do begin
     r := 0;
     for i := 0 to 3 do
       for j := 0 to 3 do
         r := r + GetRValue(Form1.Canvas.Pixels[4*x+i, 4*y+j]);
     r := round(r / 16);
     g := 0;
     for i := 0 to 3 do
       for j := 0 to 3 do
         g := g + GetGValue(Form1.Canvas.Pixels[4*x+i, 4*y+j]);
     g := round(g / 16);
     b := 0;
     for i := 0 to 3 do
       for j := 0 to 3 do
         b := b + GetBValue(Form1.Canvas.Pixels[4*x+i, 4*y+j]);
     b := round(b / 16);
     Form1.Canvas.Pixels[x,y] := RGB(r, g, b)
   end;
   Application.ProcessMessages;
 end;
...



--------------------
PM MAIL WWW ICQ Skype   Вверх
dr.ZmeY
Дата 7.12.2003, 16:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Политолог
****


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

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



Как сохранять и читать JPEG найдёшь в ФАКе


--------------------
PM MAIL WWW ICQ Skype   Вверх
<Spawn>
Дата 7.12.2003, 17:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Око кары:)
****


Профиль
Группа: Экс. модератор
Сообщений: 2776
Регистрация: 29.1.2003
Где: Екатеринбург

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



Snick_Y2K А может лучше воспользоваться StretchBlt?

Код
BOOL StretchBlt(

   HDC hdcDest, // handle of destination device context
   int nXOriginDest, // x-coordinate of upper-left corner of dest. rect.
   int nYOriginDest, // y-coordinate of upper-left corner of dest. rect.
   int nWidthDest, // width of destination rectangle
   int nHeightDest, // height of destination rectangle
   HDC hdcSrc, // handle of source device context
   int nXOriginSrc, // x-coordinate of upper-left corner of source rectangle
   int nYOriginSrc, // y-coordinate of upper-left corner of source rectangle
   int nWidthSrc, // width of source rectangle
   int nHeightSrc, // height of source rectangle
   DWORD dwRop  // raster operation code
  );



--------------------
"Для некоторых людей программирование является такой же внутренней потребностью, подобно тому, как коровы дают молоко, или писатели стремятся писать" - Николай Безруков.
PM MAIL ICQ   Вверх
<Spawn>
Дата 7.12.2003, 17:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Око кары:)
****


Профиль
Группа: Экс. модератор
Сообщений: 2776
Регистрация: 29.1.2003
Где: Екатеринбург

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



Хотя щас решил взглянуть на внутренность CopyRect - там и есть эта StretchBlt. Сам я особенно этим не пользовался, так что может твой вариант и лучше, но насколько я знаю, SetPixel(а эта функция используется внутри) работает достаточно медленно, так что лучше для этого варианта зайти на сайт Мастеров Дельфи и скачать там класс QPixels, с прямым доступом к видеопамяти.


--------------------
"Для некоторых людей программирование является такой же внутренней потребностью, подобно тому, как коровы дают молоко, или писатели стремятся писать" - Николай Безруков.
PM MAIL ICQ   Вверх
dr.ZmeY
Дата 7.12.2003, 20:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Политолог
****


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

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



Цитата
так что лучше для этого варианта зайти на сайт Мастеров Дельфи и скачать там класс QPixels, с прямым доступом к видеопамяти.

Да, пожалуй я его себе тоже скачаю smile.gif


--------------------
PM MAIL WWW ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Звук, графика и видео"
Girder
Snowy
Alexeis

Запрещено:

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

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

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

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


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

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


 




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


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

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