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

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

Обработка изображения [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 ?


Наверх

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