Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Мультимедиа в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 08.03.2009, 18:11   #1
oxy-fox
Пользователь
 
Аватар для oxy-fox
 
Регистрация: 24.02.2009
Сообщений: 11
Вопрос Как изменить разрешение изображения?

Хочу сделать так:
Открыть изображение и, если его ширина больше (например 600px), чтобы разрешение менялось на 600хХХХ - пропорционально, и сохранялось изображение в отдельный файл с уже измененным разрешением...

Возможно ли такое? И как это сделать? Если можно, то по-подробнее...
oxy-fox вне форума
Старый 08.03.2009, 18:20   #2
KORN
Банхаммер
Участник клуба
 
Аватар для KORN
 
Регистрация: 17.02.2007
Сообщений: 1,754
По умолчанию

Код:
procedure TForm1.Button1Click(Sender: TObject);
var
  bmp: TBItmap;
  jpg: TJpegImage;
  scale: Double;
begin
  if opendialog1.execute then
  begin
    jpg := TJpegImage.Create;
    try
      jpg.Loadfromfile( opendialog1.filename );
      if jpg.Height > jpg.Width then scale := 50 / jpg.Height
                                else scale := 50 / jpg.Width;
      bmp:= Tbitmap.Create;
      try
        {Create thumbnail bitmap, keep pictures aspect ratio}
        bmp.Width := Round( jpg.Width * scale );
        bmp.Height:= Round( jpg.Height * scale );
        bmp.Canvas.StretchDraw( bmp.Canvas.Cliprect, jpg );
        {Draw thumbnail as control}
        Self.Canvas.Draw( 100, 10, bmp );
        {Convert back to JPEG and save to file}
        jpg.Assign( bmp );
        jpg.SaveToFile(ChangeFileext( opendialog1.filename, '_thumb.JPG' ));
      finally
        bmp.free;
      end;
    finally
      jpg.free;
    end;
  end;
end;
Перед тем как спросить ищи на форуме и в GOOGLE
KORN вне форума
Старый 08.03.2009, 18:24   #3
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Если я правильно понял, то:
1. После загрузки в режиме Autosize=True сделайте
- Autosize:=False;
- Stretch:=True;
2. Ну, а потом:
Код:
if Image.Width>Image.Height then
Image.Height:=Image.Width else
Image.Width:=Image.Height;
3. И напоследок
Image.Picture.SaveToFile('myfile.bm p');
mihali4 вне форума
Старый 08.03.2009, 18:42   #4
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

k := Min(MaxWidth / ImageWidth, MaxHeight / ImageHeight);

При отрисовке рисуем размеров в ImageWidth * k x ImageHeight * k.

По сути ответ дан в самом начале Просто я раскрыл тему
BOBAH13 вне форума
Закрытая тема


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как изменить разрешение экрана lionman Общие вопросы Delphi 7 07.01.2011 12:45
Как узнать количество дисплеев и их разрешение crc83 Мультимедиа в Delphi 1 25.02.2009 01:11
Как отменить изменения изображения? ALEX_RAS Помощь студентам 1 20.05.2008 08:23
Изменить разрешение Иллидан Паскаль, Turbo Pascal, PascalABC.NET 1 18.04.2008 22:15
Помогите изменить разрешение монитора Stanislav Помощь студентам 2 06.10.2007 20:48