![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Обработка изображения [D7, WinXP]
Lazarius © (2005-11-16 16:59:00)Здраствуйте всем!!!
Итак, в image1 надо загружать jpg, но не просто загрузить, а перед этим обрезать у картинки лишнее, т. е. надо чтобы картинка была по соотношению сторон 15*10
то есть если x ширина, а y высота, то ширина обрезанного изображения получается x1=y*1,5 где y высота первоначального изображения.
Так вот: как мне обрезать лишнее, что выходит за пределы нового размера????!!!!
Уже всю голову сломал! Помогите плиз!
Заранее всем спасибо.
Separator (2005-11-19 13:41:00) [1]посмотри:
http://Sergey-Vilgelm.narod.ru/source/access.rar [560Кб]
там есть методы работы с картинками, правда в основном изменение размера (увелисение, уменьшение) различными методами, но может и поможет
GraphicConvert.dpr - dll на KOL сделана, там же вложил библиотеки KOL которые использовал
Alaman (2005-11-19 13:27:00) [2]Попробуй перед строчкой:
bitmap.Assign(jpg);
поставить
jpg.DEEBNeeded
Lazarius (2005-11-17 17:39:00) [3]Вот так вот режет более менее
Jpg.LoadFromFile(s);
x := jpg.Height * 1.5;
nw := jpg.Height - floor(x);
image1.picture.bitmap.Height := jpg.Height;
image1.picture.bitmap.Width := floor(x);
bitmap.Height := jpg.Height;
bitmap.Width := jpg.Width;
bitmap.Assign(jpg);
cw := (bitmap.Width mod 2);
image1.Picture.Bitmap.Canvas.CopyRect(Rect(floor(nw/4), 0, floor(x), jpg.Height),
Bitmap.Canvas,
Bounds(0, 0, floor(x), jpg.Height));
Но отрезает только слева, а надо чтобы слева отрезал в половину меньше и справа, столько же.
Lazarius (2005-11-16 18:08:00) [4]image1.Canvas.Height := jpg.Height;
image1.Canvas.Width := floor(x);
вот этого делфа не воспринимает, нет у image1.canvas свойств height и width
WondeRu (2005-11-16 18:02:00) [5]ошибся чуть... чуть
image1.Height := jpg.Height;
image1.Width := floor(x);
image1.Canvas.Height := jpg.Height;
image1.Canvas.Width := floor(x);
........
image1.Canvas.CopyRect(Rect(0, 0, floor(x), jpg.Height),
Bitmap.Canvas,
Bounds(cw, 0, floor(x), jpg.Height));
криво....
Lazarius (2005-11-16 17:52:00) [6]а поточнее можно
ведь у жпг канвы нет и приходится переводить в битмап
WondeRu (2005-11-16 17:46:00) [7]Lazarius (16.11.05 17:43) [4]
bitmap.Assign(jpg);
тут
Lazarius (2005-11-16 17:43:00) [8]Вот мой код:
Jpg.LoadFromFile(s);
x := jpg.Height * 1.5;
image1.picture.bitmap.Height := jpg.Height;
image1.picture.bitmap.Width := floor(x);
bitmap.Height := jpg.Height;
bitmap.Width := jpg.Width;
bitmap.Assign(jpg);
cw := (bitmap.Width mod 2) + floor(x/2);
image1.Picture.Bitmap.Canvas.CopyRect(Rect(0, 0, floor(x), jpg.Height),
Bitmap.Canvas,
Bounds(cw, 0, floor(x), jpg.Height));
но как то неправильно вырезается область. И не могу понять где ошибка.
Antonn (2005-11-16 17:18:00) [9]наверно потому, что в image не tbitmap?..
Lazarius (2005-11-16 17:09:00) [10]ну вот с ним всю голову и сломал
Jeer (2005-11-16 17:06:00) [11]CopyRect ?