Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как изменить размер картинки? [D5, Win95/98]


Ulyanov ©   (2002-10-03 19:41:00) 

Нужна процедура, которая откроет графический файл формата *.jpg, изменить размер картинки и сохранит его обратно!


int64   (2002-10-05 03:26:00) [1]

Ulyanov
Вообще-то, формат *.jpg не для того, чтобы менять содержимое. Это конечный фрмат, для хранения.
Если ты его будешь постоянно открывать-модифицировать-сохранять, что можешь терять в качестве по сравнению с теми же операциями в битмапах.


Rouse_   (2002-10-05 03:11:00) [2]

procedure TForm1.Button1Click(Sender: TObject);
var b:TBitmap;
j:TJPegImage;
scale:Integer;
begin
if OpenPictureDialog1.Execute then begin
J:=TJpegImage.Create;
j.LoadFromFile(OpenPictureDialog1.FileName);
b:=TBitmap.Create;
b.Assign(j);
scale := 250 ;
b.Width := Round( scale );
b.Height:= Round( scale );
b.Canvas.StretchDraw( b.Canvas.Cliprect, j );
j.Assign( b );
j.SaveToFile(OpenPictureDialog1.FileName+".jpg");
b.Free;
j.Free;
end;
end;

Ну это грубый набросок, но принцип надеюсь понятен?

Желаю успехов


AL2002   (2002-10-04 18:05:00) [3]

>Кулюкин Олег © (04.10.02 15:26)
Платный.


Кулюкин Олег   (2002-10-04 15:26:00) [4]

Есть компонент TJpgResizer от компании Konkretno Otvet, бесплатный.


REA   (2002-10-04 10:28:00) [5]

Задача нетривиальна и потому никто не может точно ответить. Для растровой графики нет "стандартных" алгоритмов преобразования, а есть популярные. Преобразование (тем более jpg) происходит с потерей качества.
В общем случае алгоритм такой:
загрузить картинку
создать рабочий Bitmap
провести преобразование в него
превратить в jpg
сохранить

компоненты наверняка уже где то есть для подобных операций с картинками. ищи.


Song   (2002-10-04 09:40:00) [6]

Надо переводить в TBitMap там с ней можно сделать всё что угодно. После того как поизвращаетесь, переведите в jpg обратно и сохраните.


Jeer   (2002-10-03 23:34:00) [7]

Иди и поучись, если советом понять не можешь.
Ах, хотелось очередной раз ^C - ^V.
Не со мной, после таких обертонов.


Ulyanov   (2002-10-03 23:13:00) [8]

Да вы чё все, а?
Мне кто-нибудь на вопрос конкретно ответит или нет?
Всякую чушь пишите!


Jeer   (2002-10-03 22:11:00) [9]

Да не - все понятно.
Но если ты раздвигаешь два пикселя и между ними появляются 10 виртуальных (их же не было ?) - так как их сосчитать ?
Правильно - интерполяцией.
Запусти поиск - "билинейная интерполяция", ну и..


Ulyanov   (2002-10-03 21:13:00) [10]

Мне просто нужен пример процедуры с помощью которой я могу изменить размер рисунка в формате *.jpg


Jeer   (2002-10-03 21:02:00) [11]

2/3 <> 4/3
Это тебе надо ?


Ulyanov   (2002-10-03 20:50:00) [12]

Допустим есть у меня картинка размером 400 на 300 в формате *.jpg. Надо чтобы процедура открыла этот файл изменила размер картинки допустим на (300 на 200) и сохранила обратно изменённую картинку


Song   (2002-10-03 20:42:00) [13]

В смысле как изменить? Добавить или растянуть/сжать?


Наверх

Титульная страница Поиск, карта сайта Написать письмо