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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

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

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 26.11.2010, 14:12   #31
Sibedir
Тот ещё
Старожил
 
Аватар для Sibedir
 
Регистрация: 14.11.2007
Сообщений: 2,242
По умолчанию

Цитата:
Не зависимо от размера загружаемого изображения(1х1 или 1024х768), Image должен быть:
Image.Width := 280;
Image.Height := 160;
Да он и так остается таким. В моем примере размеры имеджа не меняются !

Цитата:
Ну и? размеры Image становятся 260х180 - А должны быть 280х160
Вы не мою программу запускали.

Догадываюсь, что ваши картинки нужно масштавировать без соблюдения исходных пропорций. Пробуй так:
Код:
      Pic.LoadFromFile (OpenPictureDialog.FileName);
      Assign (Pic.Graphic);
      Pic.Free;

      kx := Width/Image.Width;
      ky := Height/Image.Height;
      r1 := Rect (0, 0, Width, Height);
      r2 := Rect (0, 0, Round (Width / kx), Round (Height / ky));

      SetStretchBltMode (Canvas.Handle, HALFTONE);
      if kx < 1 then Width := r2.Right;
      if kx < 1 then Height := r2.Bottom;

      StretchBlt (Canvas.Handle, 0, 0, r2.Right, r2.Bottom, Canvas.Handle, 0, 0, r1.Right, r1.Bottom, SRCCOPY);

      if kx > 1 then Width := r2.Right;
      if kx > 1 then Height := r2.Bottom;
А Image на форме как был 280х160, так пусть и остается таким. Не трогайте его. Он уже нужного вам размера.

Последний раз редактировалось Sibedir; 26.11.2010 в 14:22.
Sibedir вне форума
Старый 26.11.2010, 15:12   #32
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Что-то вы тут "зависли"...
Вот, набросал рабочий примерчик еще и с преобразованием BMP в JPG:
Код:
procedure TForm1.Button12Click(Sender: TObject);
var jpg: tjpegimage; 
    bmp: timage;
begin
Image2.Picture.LoadFromFile('d:\1.bmp');//исходный размер 200х150
Image2.AutoSize:=False;
Image2.Height:=50;
Image2.Width:=60;
Image2.Repaint;
Application.ProcessMessages;
//создаем экземпляр объекта
bmp:=timage.Create(self);
bmp.Width:=image2.Width;
bmp.Height:=image2.Height;
bmp.Canvas.StretchDraw(rect(0,0,image2.Width,image2.Height),image2.Picture.Graphic);
bmp.Picture.SaveToFile('d:\3.bmp'); //сохраняем уже готовую bmp картинку в файл, размер 60х50
Application.ProcessMessages;
//создаем экземпляр объекта
jpg:=tjpegimage.create; 
//присваиваем переменной jpg картинку из bmp
jpg.assign(bmp.picture.graphic); 
//устанавливаем параметры качества. Должно быть от 1 до 100. Если 100, то качество лучшее, 1 худшее
jpg.compressionquality:=75; 
//производим сжатие данных картинки
jpg.compress; 
//и сохраняем уже готовую jpg картинку в файл
jpg.savetofile('d:\2.jpg'); //размер 60х50
//уничтожаем объекты, чтобы не засорять память
jpg.free; 
bmp.Free;
end;

Последний раз редактировалось mihali4; 26.11.2010 в 15:17.
mihali4 вне форума
Старый 27.11.2010, 10:26   #33
XerSon
Форумчанин
 
Аватар для XerSon
 
Регистрация: 21.01.2008
Сообщений: 211
По умолчанию

Sibedir

Спасибо, последний код, как раз то что мне и надо было!

mihali4

Компрессия мне известна, спс!

Тема закрыта.
XerSon вне форума
Старый 27.11.2010, 16:32   #34
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Цитата:
Сообщение от XerSon Посмотреть сообщение
Компрессия мне известна, спс!
Дело не в компрессии - это в "нагрузку".
А в масштабировании :
Код:
...
Image2.Picture.LoadFromFile('d:\1.bmp');//исходный размер 200х150
Image2.AutoSize:=False;
Image2.Height:=50;
Image2.Width:=60;
Image2.Repaint;
Application.ProcessMessages;
//создаем экземпляр объекта
bmp:=timage.Create(self);
bmp.Width:=image2.Width;
bmp.Height:=image2.Height;
bmp.Canvas.StretchDraw(rect(0, 0, image2.Width, image2.Height), image2.Picture.Graphic);
bmp.Picture.SaveToFile('d:\3.bmp'); //сохраняем уже готовую bmp картинку в файл, размер 60х50
...
mihali4 вне форума
Закрытая тема


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как получить цвет пикселя из картинки jpg,не конвертируя в bmp?? Dima_Dima Общие вопросы Delphi 3 27.05.2010 10:49
как в jpg узнать цвет пикселя без конвертирования в bmp? ????????????????? Dima_Dima Помощь студентам 0 26.05.2010 18:51
Как получить доступ к пикселям jpg без конвертирования в bmp Dima_Dima Общие вопросы Delphi 0 26.05.2010 16:35