Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 21.12.2011, 22:56
Snake22 Snake22 вне форума
Активный
 
Регистрация: 20.02.2011
Сообщения: 374
Репутация: 744
По умолчанию сделать JPG Image чёрно белым

Подскажите пожвлуйста процедурку чтоб картинку сделать чб.
на форме Image с загруженной в него Jpg картинкой.
пробовал отсюда два кода использовать но ни один ни второй не помогают,
картинка вообще исчезает с формы, потому что загружена картинка формата жпг а не бмп (пробовал бмп,с ней обе процедурки работают)
http://forum.vingrad.ru/topic-32619.html/
====================
а всё,разобрался.
создал переменную типа jpeg в нее скидываю картинку из image,и потом битмапу скидываю картинку из jpeg и после преобразования назад

Последний раз редактировалось Snake22, 21.12.2011 в 23:15.
Ответить с цитированием
  #2  
Старый 21.12.2011, 23:33
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

У TJPEGImage имеется свойство Grayscale.
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
  #3  
Старый 22.12.2011, 19:23
Snake22 Snake22 вне форума
Активный
 
Регистрация: 20.02.2011
Сообщения: 374
Репутация: 744
По умолчанию

а как этим свойством пользоваться? так интересно вдруг пригодиться..
попробовал так,из Image'a скинул картинку в переменную TJpegImage.
установил Grayscale в true , скидываю картинку из jpeg'a обратно Image1.picture.assign(tmpjpeg) и картинка таже самая остаётся
Ответить с цитированием
  #4  
Старый 22.12.2011, 19:28
Snake22 Snake22 вне форума
Активный
 
Регистрация: 20.02.2011
Сообщения: 374
Репутация: 744
По умолчанию

и еще вопрос по преобразованию в чб.
сейчас юзаю этот код(в процедуру отправляю номер картинки из массива,и эта картинка делается чернобелой).
И если картинка в моём массиве уже стала чернобелой посредством данной процедуры,то во второй раз при попытке jpeg'y присвоить эту черонбелую картинку появляется ошибка.сдела пока через try except,но хочется разобраться изза чего это получается
Код:
type
  TRGB=record
  b,g,r : byte;
   end;
  Type
    ARGB=array [0..1] of TRGB;
    PARGB=^ARGB;

procedure TForm1.BlackWhite(nomerikonki:Integer);
var
  i, j, c : integer;
  p : PARGB;
  bw_image:tbitmap;
  tmpjpeg:TJPEGImage;
begin
tmpjpeg:=TJPEGImage.Create;
try
tmpjpeg.Assign(ims[nomerikonki].Picture);
except Exit end;
bw_image:=TBitmap.Create;
bw_image.Assign(tmpjpeg);
bw_image.PixelFormat:=pf24bit;
 for i:=0 to bw_image.Height-1 do
 begin
  p:=bw_image.ScanLine[i];
  for j:=0 to bw_image.Width-1 do
  begin
   c:=round(0.3*p[j].r+0.59*p[j].g+0.11*p[j].b);
 //  if c>=128 then c:=255 else c:=0; //эту строку надо убрать чтобы получить градации серого
   p[j].r:=c;
   p[j].g:=c;
   p[j].b:=c;
  end;
 end;
ims[nomerikonki].Picture.Assign(bw_image);
tmpjpeg.Free;
bw_image.Free;
end;
Ответить с цитированием
  #5  
Старый 23.12.2011, 00:04
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Цитата:
Сообщение от Snake22
а как этим свойством пользоваться? так интересно вдруг пригодиться..
Как вариант:
Код:
procedure TForm2.FormCreate(Sender: TObject);
begin
  jpg := TJpegImage.Create;
  jpg.LoadFromFile('f:\picture\jpg\nature\3.jpg');
  Image1.Picture.Assign(jpg);
  Image2.Picture.Assign(jpg);
end;

procedure TForm2.Button1Click(Sender: TObject);
var
  bmp : TBitmap;
begin
  bmp := TBitmap.Create;
  try
    jpg.Assign(Image1.Picture.Graphic);
    jpg.Grayscale := True;
    bmp.Assign(jpg);
    Image2.Picture.Assign(bmp);
    jpg.Grayscale := False;
  finally
    bmp.Free;
  end;
end;
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
  #6  
Старый 23.12.2011, 17:50
Snake22 Snake22 вне форума
Активный
 
Регистрация: 20.02.2011
Сообщения: 374
Репутация: 744
По умолчанию

о спс,и кстати вторая проблема решилась сама после того как добавил не просто jpg.assign(image1.picture) а еще и .graphic
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 23:40.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025