Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.03.20;
Скачать: CL | DM;

Вниз

Как соединить две фотографии .jpg в одну?   Найти похожие ветки 

 
Михаил5   (2004-11-30 10:46) [0]

Допустим, есть два фото (и более). Хотелось бы сделать простенький коллаж - поставить их рядом. Сделать это программно, разумеется. Вопрос подгонки по размерам и т.д. - уже второстепенный, интересует сам принцип работы с файлами такого типа.
Подскажите пожалуйста!


 
_Nikolay ©   (2004-11-30 13:52) [1]

Модуль целиком.
Две Jpeg преобразуются в Bmp, накладывается вторая на первую (если фон у второй вычищен, получится хорошо).
При необходимости можно приписать процедуру сохранения.

unit
 U_Composite;

interface

uses
 Windows, Messages, SysUtils, Variants,
 Classes, Graphics, Controls, Forms,
 Dialogs, StdCtrls, Buttons, ExtCtrls,
 ExtDlgs, Jpeg;

type
 TForm1 = class(TForm)
   FormImaje: TImage;
   BitBtn1: TBitBtn;
   procedure BitBtn1Click(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
 end;

var
 Form1: TForm1;

implementation
{$R *.dfm}

procedure TForm1.BitBtn1Click(Sender: TObject);
var
 Jpeg : TImage ;
 BitMap1 : TBitmap ;
 BitMap2 : TBitmap ;
begin
 Jpeg := TImage.Create(Owner);
 BitMap1 := TBitmap.Create ;
 BitMap2 := TBitmap.Create ;
 Jpeg.Picture.LoadFromFile("jpeg\red.jpg" );
 BitMap1.Assign(Jpeg.Picture.Graphic);
 Jpeg.Picture.LoadFromFile("jpeg\white.jpg"  );
 BitMap2.Assign(Jpeg.Picture.Graphic);
 BitMap2.Transparent := true ;
 FormImaje.Canvas.Draw(100,100,BitMap1);
 FormImaje.Canvas.Draw(120,120,BitMap2);
end;

end.


 
OneFragLeft ©   (2004-11-30 17:45) [2]

_Nikolay ©   (30.11.04 13:52) [1]
Думаю, это немного не то, что просил автор.(я могу ошибаться)
Надо сделать ленту? Я правильно понял?
Если да, то нужно вычислить размер конечной фотки(например если 10 фото 128*128 пикселей, то результатом будет 1280*128 (или 128*1280) в зависимости горизонтальной или вертикальной будет лента.)
Затем делает битмап таких рамеров и делаем Bitmap.Canvas.Draw(0,i*128,<наш JPEG>);, где i-номер фотки(если вертикальная лента). Ну а битмап уж готовый сможете использовать.


 
OneFragLeft ©   (2004-11-30 17:46) [3]

А если использовать StretchBitmap, то фотки под один размер подгонять не придёться.


 
Михаил5   (2004-12-02 14:32) [4]

Спасибо, _Nikolay, OneFragLeft!
Спасибо за модуль, пригодится, хотя, действительно, нужно сделать ленту. Буду пытаться!



Страницы: 1 вся ветка

Текущий архив: 2005.03.20;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.04 c
3-1108794959
NikNet
2005-02-19 09:35
2005.03.20
DELPHI ADO MSSQL Есть у кого пример?


14-1109416402
boriskb
2005-02-26 14:13
2005.03.20
Вот она - настоящая литература!


1-1109862724
Володя
2005-03-03 18:12
2005.03.20
диспечер задачь


1-1110191808
dDan
2005-03-07 13:36
2005.03.20
RegExp


3-1108716191
msguns
2005-02-18 11:43
2005.03.20
Дата в IB