Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Работа с JPEG 
:(
    Опции темы
Лена
Дата 18.2.2009, 14:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 879
Регистрация: 16.8.2006

Репутация: 11
Всего: 11



Как картинки jpeg наложить поверх друг друга и сохранить в отдельный файл. В архиве три картинки.
2 картинки которые надо наложить, а в третьей результат. Как это можно реализовать?

Начала так:
Код

#include <memory>
#include "jpeg.hpp"
using namespace std;

//****************
  AnsiString Path = ExtractFilePath(Application->ExeName);
  Path = Path + "myfiles\\1.jpeg";

    if(FileExists(Path))
        {
         //большая картинка всегда 256 на 256 пикселей
         auto_ptr <TJPEGImage> er(new TJPEGImage());
         er->LoadFromFile("myfiles\\1.jpeg");
         //маркер
         auto_ptr <TJPEGImage> er2(new TJPEGImage());
         er2->LoadFromFile("myfiles\\2.jpeg");

                                //а как теперь объединить и сохранить результат?
        }
        else
           {
           //           
          }



Это сообщение отредактировал(а) Лена - 18.2.2009, 14:49

Присоединённый файл ( Кол-во скачиваний: 11 )
Присоединённый файл  picture.zip 56,51 Kb
PM MAIL   Вверх
Dmi3ev
Дата 18.2.2009, 15:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1698
Регистрация: 28.11.2007

Репутация: 16
Всего: 41



я так понял одну надо на другой нарисовать, а потом все это сохранить, для наглядности использовал Image, но можно и без него это все провернуть
Код

#include <jpeg.hpp>
//...
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Graphics::TBitmap *bm=new Graphics::TBitmap;
TJPEGImage* ji=new TJPEGImage;
ji->LoadFromFile("D:\\N70_5.jpg");
bm->Assign(ji);
Image1->Picture->Bitmap=bm;
ji->LoadFromFile("D:\\N70_5.jpg");
bm->Assign(ji);
Image1->Picture->Bitmap->Canvas->Draw(300,300,bm);
Image1->Picture->SaveToFile("D:\\22.bmp");
}


Добавлено через 1 минуту и 5 секунд
использовал одну и туже картинку для наглядности... чтобы видно было смещение...


--------------------

PM MAIL   Вверх
Лена
Дата 18.2.2009, 15:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 879
Регистрация: 16.8.2006

Репутация: 11
Всего: 11



Спасибо за помощь.
Мне результирующая картинка нужна в формате jpeg и я не могу использовать компонеты типа Image. 
Это код на сервере для web интерфейса...
Мне надо получить картику и потом отправить ее пользователю.
PM MAIL   Вверх
mrbrooks
Дата 18.2.2009, 15:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

Репутация: 167
Всего: 306



Лена, дык собственно не сложно конвертнуть из bmp в jpeg.
PM MAIL   Вверх
Alca
Дата 18.2.2009, 15:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3993
Регистрация: 14.6.2006

Репутация: 25
Всего: 50



Цитата

я не могу использовать компонеты типа Image

Чего низя?


Это сообщение отредактировал(а) Alca - 18.2.2009, 15:29


--------------------
PM WWW ICQ Skype Jabber   Вверх
Лена
Дата 18.2.2009, 15:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 879
Регистрация: 16.8.2006

Репутация: 11
Всего: 11



Цитата(Alca @  18.2.2009,  15:23 Найти цитируемый пост)
Чего низя? 



Цитата(Лена @  18.2.2009,  15:17 Найти цитируемый пост)
Это код на сервере 


WAP интерфейс.


Это сообщение отредактировал(а) Лена - 18.2.2009, 15:28
PM MAIL   Вверх
Dmi3ev
Дата 18.2.2009, 15:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1698
Регистрация: 28.11.2007

Репутация: 16
Всего: 41



хорошо, подробно, суть та же...
Код

#include <jpeg.hpp>
//...
void __fastcall TForm1::Button1Click(TObject *Sender)
{

Graphics::TBitmap *bm=new Graphics::TBitmap;
Graphics::TBitmap *temp=new Graphics::TBitmap;

TJPEGImage* ji1=new TJPEGImage;
TJPEGImage* ji2=new TJPEGImage;

ji1->LoadFromFile("D:\\N70_5.jpg");
ji2->LoadFromFile("D:\\N70_5.jpg");

bm->Assign(ji1);
temp->Assign(ji2);
bm->Canvas->Draw(500, 500, temp);

ji1->Assign(bm);
ji1->SaveToFile("D:\\22.jpg");
}
//---------------------------------------------------------------------------



--------------------

PM MAIL   Вверх
Лена
Дата 18.2.2009, 15:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 879
Регистрация: 16.8.2006

Репутация: 11
Всего: 11



Цитата(Alca @  18.2.2009,  15:23 Найти цитируемый пост)
ji->SaveToFile(".....");


Ну да так и будет в конце, но там же должна быть объедененная картинка (как в архиве).

Добавлено через 2 минуты и 4 секунды
Цитата(Dmi3ev @  18.2.2009,  15:29 Найти цитируемый пост)
хорошо, подробно, суть та же...


Спасибо, сейчас попробую. 

P.S.
А вторая картинка разве будет строго по центру?

PM MAIL   Вверх
Dmi3ev
Дата 18.2.2009, 15:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1698
Регистрация: 28.11.2007

Репутация: 16
Всего: 41



Цитата

Ну да так и будет в конце, но там же должна быть объедененная картинка (как в архиве).

так и есть...


--------------------

PM MAIL   Вверх
mrbrooks
Дата 18.2.2009, 15:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

Репутация: 167
Всего: 306



Цитата(Лена @  18.2.2009,  15:30 Найти цитируемый пост)
P.S.
А вторая картинка разве будет строго по центру?

я что то в этом сомневаюсь.  smile 
PM MAIL   Вверх
Dmi3ev
Дата 18.2.2009, 15:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1698
Регистрация: 28.11.2007

Репутация: 16
Всего: 41



Цитата

А вторая картинка разве будет строго по центру?

с координатами сама разберешься, это не сложно, если у тебя 256 на 256, то центр 128, 128, учитывая что вторая картинка, допустим 20х20, начинаем с 118, 118, так примерно, чтобы по центру было...
вот тут указываешь эти координаты
Код

bm->Canvas->Draw(500, 500, temp);

я просто показал, как это делать, а красоту наводить у тебя даже лучше получится, ты же из прекрасного пола...



--------------------

PM MAIL   Вверх
Alca
Дата 18.2.2009, 15:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3993
Регистрация: 14.6.2006

Репутация: 25
Всего: 50



Цитата

Цитата(Alca @  18.2.2009,  15:23 )
Чего низя? 


Цитата(Лена @  18.2.2009,  15:17 )
Это код на сервере 


WAP интерфейс.


Код

 :girl_crazy 
//---------------------------------------------------------------------------
void setAsMainForm() {
  TIWForm1::SetAsMainForm();
 }
#pragma startup setAsMainForm
void __fastcall TIWForm1::IWAppFormWAPCreate(TObject *Sender)
{
    TImage *Image1 = new TImage(NULL);


    Graphics::TBitmap *bm=new Graphics::TBitmap;
    TJPEGImage* ji=new TJPEGImage;
    ji->LoadFromFile("D:\\N70_5.jpg");
    bm->Assign(ji);
    Image1->Picture->Bitmap=bm;
    ji->LoadFromFile("D:\\N70_5.jpg");
    bm->Assign(ji);
    Image1->Picture->Bitmap->Canvas->Draw(300,300,bm);
    Image1->Picture->SaveToFile("D:\\22.bmp");

    delete  Image1;
}
//---------------------------------------------------------------------------

Или я чего-то не догоняю? smile 

Это сообщение отредактировал(а) Alca - 18.2.2009, 15:44


--------------------
PM WWW ICQ Skype Jabber   Вверх
mrbrooks
Дата 18.2.2009, 15:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

Репутация: 167
Всего: 306



Должно быть что то вроде этого
Код

std::auto_ptr<TJPEGImage>jpeg1(new TJPEGImage);
std::auto_ptr<TJPEGImage>jpeg2(new TJPEGImage);
jpeg1->LoadFromFile("1.jpeg");
jpeg2->LoadFromFile("2.jpeg");
std::auto_ptr<Graphics::TBitmap>bmp1(new Graphics::TBitmap);
std::auto_ptr<Graphics::TBitmap>bmp2(new Graphics::TBitmap);
bmp1->Assign(jpeg1.get());
bmp2->Assign(jpeg2.get());
bmp1->Canvas->CopyRect(TRect(bmp1->Height/2,bmp1->Width/2,bmp1->Height,bmp1->Width),bmp2->Canvas,
                       TRect(0,0,bmp1->Height,bmp1->Width));
jpeg1->Assign(bmp1.get());
jpeg1->SaveToFile("res.jpeg");

PM MAIL   Вверх
Dmi3ev
Дата 18.2.2009, 15:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1698
Регистрация: 28.11.2007

Репутация: 16
Всего: 41



Код


Graphics::TBitmap *bm=new Graphics::TBitmap;
Graphics::TBitmap *temp=new Graphics::TBitmap;

TJPEGImage* ji1=new TJPEGImage;
TJPEGImage* ji2=new TJPEGImage;

ji1->LoadFromFile("D:\\1.jpg");
ji2->LoadFromFile("D:\\2.jpg");

bm->Assign(ji1);
temp->Assign(ji2);
bm->Canvas->Draw(118, 117, temp);

ji1->Assign(bm);
ji1->SaveToFile("D:\\res1.jpg");

вот твой автобусик в том же месте, что и в примере у тебя...
все ок...


--------------------

PM MAIL   Вверх
mrbrooks
Дата 18.2.2009, 15:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

Репутация: 167
Всего: 306



Цитата(Dmi3ev @  18.2.2009,  15:40 Найти цитируемый пост)
Цитата

А вторая картинка разве будет строго по центру?

с координатами сама разберешься, это не сложно, если у тебя 256 на 256, то центр 128, 128, учитывая что вторая картинка, допустим 20х20, начинаем с 118, 118, так примерно, чтобы по центру было...
вот тут указываешь эти координаты
Выделить всёкод C++ Builder
1:
    
bm->Canvas->Draw(500, 500, temp);

я просто показал, как это делать, а красоту наводить у тебя даже лучше получится, ты же из прекрасного пола...

совершенно с вами согласен  smile

Добавлено через 36 секунд
Цитата(Dmi3ev @  18.2.2009,  15:47 Найти цитируемый пост)
вот твой автобусик в том же месте, что и в примере у тебя...
все ок... 

с этим тоже
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.0672 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.