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

Вниз

Равномерное обрезание картинки по краям?   Найти похожие ветки 

 
Мастер Ломастер   (2005-12-01 02:39) [0]

Здравствуйте, уважаемые мастера!

Подскажите пожалуйста как сделать следующее:
1. Есть некоторая картинка на белом фоне.
2. Как сделать обрезание по краям картинки, чтобы не было излишнего количества белого фона (извините за тувтологию). Ну скажем чтобы расстояние от картинки до краев было 10 pix.

Спасибо.


 
Джо ©   (2005-12-01 02:57) [1]

Скопировать с одной Канвы на другую ее методом CopyRect.


 
Мастер Ломастер   (2005-12-01 03:04) [2]

Проблема в том что я заранее не знаю размер картинки, т.е. надо как-то вычилсять границы.


 
Джо ©   (2005-12-01 03:13) [3]

Если известен цвет фона, то можно проходить по массиву Pixels[x,y] по горизонтали/вертикали до первого обнаруженного пиксела, чей цвет отличается от цвета фона.


 
Васяня   (2005-12-01 05:56) [4]

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


 
Джо ©   (2005-12-01 06:02) [5]


>  [4] Васяня   (01.12.05 05:56)

Васяня, где в вопросе сказано о градиентном фоне?


 
Васяня   (2005-12-01 06:17) [6]

Джо, ты не понял, я имею ввиду что сама картинка может по краям иметь белые пиксели + к этому белый фон, и как тут тогда разграничить!?

Ну, например, как показано тут - http://3w.cross-kpk.ru/sample.jpg
Красная линия это разделение рисунка и фон...


 
Джо ©   (2005-12-01 06:25) [7]

Значит, нужно анализировать целые строки.


 
Васяня   (2005-12-01 06:29) [8]

Джо, вот я именно про это... причем надо будет логический анализ делать, мне видется след. решение - надо в конечном итоге путем анализа строк(если даже за пример брать sample.jpg) получить квадрать, по сути на рисунке это отмечено красным квадратом... и уже по его рамке обрезать рисунок...

Но тут ДОФИГИЩЕ еще разных "ЕСЛИ", все упрощается есть фон это однородный цвет битмэпа, а если это джипег то тут вообще гемор...


 
Джо ©   (2005-12-01 06:31) [9]


> Но тут ДОФИГИЩЕ еще разных "ЕСЛИ", все упрощается есть фон
> это однородный цвет битмэпа, а если это джипег то тут вообще
> гемор...

Вот с этим не поспоришь...


 
ShiFT   (2005-12-01 07:07) [10]


> Ну скажем чтобы расстояние от картинки до краев было 10 pix.

простой код.
procedure BitmapCrop( SourceBitmap, DestBitmap: TBitmap; const Offset: Integer);
var
 sr, dr: TRect;
begin
 sr := SourceBitmap.Canvas.ClipRect;
 sr := Rect( sr.Left+Offset, sr.Top+Offset, sr.Right-Offset, sr.Bottom-Offset);
 DestBitmap.Width  := sr.Right  - sr.Left;
 DestBitmap.Height := sr.Bottom - sr.Top;
 dr := Rect( 0, 0, sr.Right - Offset, sr.Bottom - Offset);
 DestBitmap.Canvas.CopyRect( dr, SourceBitmap.Canvas, sr);
end;

procedure TForm1.Button1Click(Sender: TObject);
var
 b: TBitmap;
 s: TBitmap;
begin
 s := TBitmap.Create;
 s.LoadFromFile( "img1.BMP");
 b := TBitmap.Create;
 BitmapCrop( s, b, 10);
 Form1.Canvas.Draw( 0, 0, b);
 s.Free;
 b.Free;
end;


ну а если анализировать то ....



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

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

Наверх




Память: 0.49 MB
Время: 0.037 c
1-1133447908
novice
2005-12-01 17:38
2005.12.25
Возможно ли напечатать нарисованное на канве?


4-1129803049
Tristania
2005-10-20 14:10
2005.12.25
Вопрос по WH_JOURNALPLAYBACK/WH_JOURNALRECORD хукам


6-1126118804
Rave
2005-09-07 22:46
2005.12.25
Поиск по серверам.


14-1133613666
LordOfRock
2005-12-03 15:41
2005.12.25
Fruity Loops + midi


2-1134335155
RX
2005-12-12 00:05
2005.12.25
TTree