Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Media";
Текущий архив: 2005.03.20;
Скачать: [xml.tar.bz2];

Вниз

Как соединить две фотографии .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 вся ветка

Форум: "Media";
Текущий архив: 2005.03.20;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.041 c
3-1108998581
xman
2005-02-21 18:09
2005.03.20
ORACLE


14-1109221228
begin...end
2005-02-24 08:00
2005.03.20
С Днём рождения! 24 февраля


14-1109435780
Narik
2005-02-26 19:36
2005.03.20
Можно ли на Delphi создать приложение *.scr?


3-1108545014
juice
2005-02-16 12:10
2005.03.20
Interbase. Наборы данных


1-1109923161
Oleg_
2005-03-04 10:59
2005.03.20
как правильно снять выделение с combobox?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский