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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

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

Купить рекламу на форуме 15-35 тыс рублей в месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.11.2006, 20:06   #1
loopy-need
 
Регистрация: 21.11.2006
Сообщений: 3
По умолчанию Изменение размера изображения, Crop image to fit height & width

Есть исходная картинка:
(на самом деле картинка может быть любой с абсолютно любым разрешением и с расширением .JPG)


При создании превью размерами 100x100 в проге "Arles Image Explorer" с опциями
“Lock aspect ratio” и
“Crop image to fit height & width”
На выходе получается:



При обработке через imagemagick (convert –resize 100x100! 1.jpg 2.jpg) или же в делфе кодом:

Код:
const
  dx = 100; 
  dy = 100;
var
  jpg: TJPEGImage;
  bmp: TBitmap;
begin
  jpg := TJPEGImage.Create;
  bmp := TBitmap.Create;
  try
    jpg.LoadFromFile('C:\1.jpg');
    bmp.Assign(jpg);
    bmp.Canvas.StretchDraw(Rect(0, 0, dx, dy), bmp);
    bmp.Width := dx; bmp.Height := dy;
    jpg.Assign(bmp);
    jpg.SaveToFile('C:\2.jpg');
  finally
    jpg.Free; bmp.Free;
  end;
получается один и тот же результат:



Необходимо же чтобы програмно создавалась такаяже превьюшка что и через Arles Image Explorer...
Кто нить подскажите куда копать?
Воопще как работает опция "Crop image to fit height & width" ?
loopy-need вне форума Ответить с цитированием
Старый 22.11.2006, 09:47   #2
Virtson
Владимир М.
Участник клуба
 
Аватар для Virtson
 
Регистрация: 30.10.2006
Сообщений: 1,289
Счастье ++

Код:
const
  dx = 200;
  dy = 200;
var
  jpg: TJPEGImage;
  bmp: TBitmap;
  m, w, h: integer;
begin
  jpg := TJPEGImage.Create;
  bmp := TBitmap.Create;
  try
    jpg.LoadFromFile('in.jpg');
    bmp.Assign(jpg);
    w:= bmp.Width;
    h:= bmp.Height;
    m:= min(w, h) div 2;
    w:= w div 2; h:= h div 2;

    bmp.Canvas.Draw(m-w, m-h, bmp);
    bmp.Width := m*2; bmp.Height := m*2;
    bmp.Canvas.StretchDraw(Rect(0, 0, dx, dy), bmp);
    bmp.Width := dx; bmp.Height := dy;
    jpg.Assign(bmp);
    jpg.SaveToFile('out.jpg');
  finally
    jpg.Free;
    bmp.Free;
  end;
  close;
end;
обрезаем края !
Берегите друг друга!
Virtson вне форума Ответить с цитированием
Старый 22.11.2006, 21:34   #3
loopy-need
 
Регистрация: 21.11.2006
Сообщений: 3
Восклицание

virtson, агромное спасибо ... помогло ...
не мог бы ты посказать ещё как убрать blur (размытие) с полученной фотки?! ;-)

кстати сегодня нашёл рещение ... в ImageMagick

Код:
convert -resize x100 -gravity center -crop 100x100+0+0 -sharpen 1x1 1.jpg 2.jpg
-sharpen 1x1 убирает блур ... как сделать в делфе хз ...

Последний раз редактировалось loopy-need; 22.11.2006 в 21:38.
loopy-need вне форума Ответить с цитированием
Старый 23.11.2006, 08:29   #4
Virtson
Владимир М.
Участник клуба
 
Аватар для Virtson
 
Регистрация: 30.10.2006
Сообщений: 1,289
По умолчанию

можно добавить цветности или контрастности.
Берегите друг друга!
Virtson вне форума Ответить с цитированием
Старый 23.11.2006, 10:23   #5
loopy-need
 
Регистрация: 21.11.2006
Сообщений: 3
По умолчанию

Цитата:
можно добавить цветности или контрастности.
можно пример?
loopy-need вне форума Ответить с цитированием
Ответ
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
image. печать большого изображения на нескольких листах OLEG'arh Общие вопросы Delphi 1 20.06.2008 13:06
Изменение размера шрифта выводимого текста в консоле, как побороть? Artefact Qt и кроссплатформенное программирование С/С++ 0 26.02.2008 00:28
Изменение размера картинки Борис Низов PHP 6 09.12.2007 16:26
Изменение вида Image при наведении указателя Сергей А Помощь студентам 3 05.08.2007 15:26
TImage-после image1.picture.bitmap.width и .height исчезает картинка Саня Компоненты Delphi 4 03.08.2007 07:55