![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как изменить размер картинки? [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]В смысле как изменить? Добавить или растянуть/сжать?