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

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

Вернуться   Форум программистов > Delphi программирование > Мультимедиа в Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 08.07.2011, 15:02   #1
gvozdkoff
Пользователь
 
Регистрация: 20.02.2009
Сообщений: 19
По умолчанию повернуть изображение и сохранить полученное в файл

всем привет.
Возникла у меня заминка.
Загружаю изображение, затем поворачиваю его на произвольный угол.
После этого , нужно сохранить полученное повернутое изображение, при сохранении получаю файл с исходным изображением которое загрузил до начала вращения.

Вот код, который использую.
Мужики , что я не так делаю то ?
Код:

//создаю слой, загружаю в битмап картинку

procedure TForm1.Button1Click(Sender: TObject);
begin
RL:= TRotLayer.Create(ImgView.Layers);
 RL.Bitmap := TBitmap32.Create;
  RL.Bitmap.LoadFromFile('1.bmp');

with RL.Bitmap do
 begin
 BeginUpdate;
    TLinearResampler.Create(RL.Bitmap);
    TCustomResampler(RL.Bitmap.Resampler).PixelAccessMode := pamTransparentEdge;
   RL.BitmapCenter := FloatPoint(Width / 2, Height / 2);
   MasterAlpha := 200;
    FrameRectS(BoundsRect, $FFFFFFFF);
    DrawMode := dmBlend;
    EndUpdate;
    Changed;

 end;
  RL.Scaled := True;
  RL.Position :=FloatPoint(ImgView.ClientWidth / 2, ImgView.ClientHeight / 2);
 end;

// вращаю изображение
procedure TForm1.ScrollBar1Change(Sender: TObject);
begin
RL.Angle:=Scrollbar1.Position;
end;

//Сохраняю изображение повернутое под некоторый угол
procedure TForm1.Button2Click(Sender: TObject);
begin
RL.Bitmap.SaveToFile('2.bmp');
end;
gvozdkoff вне форума Ответить с цитированием
Старый 10.07.2011, 21:40   #2
gvozdkoff
Пользователь
 
Регистрация: 20.02.2009
Сообщений: 19
По умолчанию

сейчас попробовал повернуть на 90 градусов
Код:
RL.Bitmap.Rotate90;
далее сохраняю в файл
Код:
RL.Bitmap.SaveToFile('image\temp\1.bmp');
и что самое интересное , при повороте на 90, 180 и 270 градусов, изображение сохраняется корректно, то есть повернутое на 90, 180 и 270.
Загадка
gvozdkoff вне форума Ответить с цитированием
Старый 10.07.2011, 23:01   #3
volod3000
Форумчанин
 
Аватар для volod3000
 
Регистрация: 18.12.2008
Сообщений: 266
По умолчанию

Вот посмотрите маленький проект, должно помочь :
Вложения
Тип файла: rar RonateImage.rar (1.75 Мб, 89 просмотров)

Мало открыть человеку глаза, большинство еще просит указать дорогу и ждет волшебного пенделя.
volod3000 вне форума Ответить с цитированием
Старый 11.07.2011, 08:41   #4
gvozdkoff
Пользователь
 
Регистрация: 20.02.2009
Сообщений: 19
По умолчанию

спасибо вам за ответ, интересный пример.
Сохранение происходит также.
Не могу понять в чем дело в моем проекте.
Может нужно как то хитро обработать картинку.
Заметил разницу при вращении объектов.
В вашем проекте видимая область при вращении рисунка ограничивается, то есть углы у него обрезаются. Ну вы наверняка это знаете.
К сожалению вот из за этого блин, немного не подходит.
На всякий случай прикрепляю свой проект, может найдется время глянуть.

Тема все еще активна.
Вложения
Тип файла: rar example1.rar (452.2 Кб, 30 просмотров)
gvozdkoff вне форума Ответить с цитированием
Старый 11.07.2011, 16:02   #5
volod3000
Форумчанин
 
Аватар для volod3000
 
Регистрация: 18.12.2008
Сообщений: 266
По умолчанию

Вот посмотрите :


Ну, а в Вашем коде, все правильно.
Вы делаете копию Вашей картинки, а что бы увидеть поворот,
нужно делать фото области канвы на которой находится картинка.
Вложения
Тип файла: rar Rotate image2.rar (1.85 Мб, 58 просмотров)

Мало открыть человеку глаза, большинство еще просит указать дорогу и ждет волшебного пенделя.
volod3000 вне форума Ответить с цитированием
Старый 14.07.2011, 11:47   #6
gvozdkoff
Пользователь
 
Регистрация: 20.02.2009
Сообщений: 19
По умолчанию

хм ) здорово. Спасибо за подсказку
Вот посмотрите пожалуйста, на данный момент есть задача загрузить изображение(1 слой), перемещать его, затем вращать (2 слой) и снова перемещаем его, но уже повернутое.

Вы правильно заметили, я делаю копию картинки (из 1 слоя) и вставляю ее в слой (2 ) для вращения, затем после вращения в слое 2 я передаю полученное изображение , тут уже варианты,
1) в исходный 1 слой
2)1 слой удаляем, делаем новый (3 слой) вставляем в него полученное изображение из 2 слоя, удаляем/очищаем 2 слой.

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

Но сейчас изображение сохраняется с "лишним фоном" канвы image1.
А размеры канвы можно задать границами рисунка ?
gvozdkoff вне форума Ответить с цитированием
Старый 14.07.2011, 16:05   #7
volod3000
Форумчанин
 
Аватар для volod3000
 
Регистрация: 18.12.2008
Сообщений: 266
По умолчанию

Цитата:
Сообщение от gvozdkoff Посмотреть сообщение
А размеры канвы можно задать границами рисунка ?
Можно задать регион , т.е. часть Canvas для копирования.

Вот, почитайте, для общего развития, может чего полезного найдете.

http://shiva16.narod.ru/Unit24.htm

http://sources.ru/delphi/graphics/gd...n_delphi.shtml

http://www.cyberforum.ru/delphi-mult...read72114.html

http://www.delphisources.ru/pages/fa...t_to_file.html

Мало открыть человеку глаза, большинство еще просит указать дорогу и ждет волшебного пенделя.
volod3000 вне форума Ответить с цитированием
Старый 14.07.2011, 20:32   #8
gvozdkoff
Пользователь
 
Регистрация: 20.02.2009
Сообщений: 19
По умолчанию

спасибо за полезную информацию и потраченное время.
Займусь чтением
gvozdkoff вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как сохранить изображение в файл имея HBITMAP WebbMan Общие вопросы C/C++ 1 17.01.2011 15:19
Как сохранить изображение с канвы в файл Marsel737 Общие вопросы Delphi 4 20.01.2010 19:44
Сохранить с Web-камеры изображение в файл hoba БД в Delphi 3 16.10.2009 13:23
Сохранить/считать изображение в/из файл(а). amdbodia Общие вопросы C/C++ 4 26.05.2009 20:05
Как сохранить изображение Image и всё что на нём, в файл? Лукманов Александр Мультимедиа в Delphi 3 24.05.2009 00:16