![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
![]() Подскажите пожвлуйста процедурку чтоб картинку сделать чб.
на форме Image с загруженной в него Jpg картинкой. пробовал отсюда два кода использовать но ни один ни второй не помогают, картинка вообще исчезает с формы, потому что загружена картинка формата жпг а не бмп (пробовал бмп,с ней обе процедурки работают) http://forum.vingrad.ru/topic-32619.html/ ==================== а всё,разобрался. создал переменную типа jpeg в нее скидываю картинку из image,и потом битмапу скидываю картинку из jpeg и после преобразования назад Последний раз редактировалось Snake22, 21.12.2011 в 23:15. |
#2
|
||||
|
||||
![]() У TJPEGImage имеется свойство Grayscale.
Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#3
|
|||
|
|||
![]() а как этим свойством пользоваться? так интересно вдруг пригодиться..
попробовал так,из Image'a скинул картинку в переменную TJpegImage. установил Grayscale в true , скидываю картинку из jpeg'a обратно Image1.picture.assign(tmpjpeg) и картинка таже самая остаётся |
#4
|
|||
|
|||
![]() и еще вопрос по преобразованию в чб.
сейчас юзаю этот код(в процедуру отправляю номер картинки из массива,и эта картинка делается чернобелой). И если картинка в моём массиве уже стала чернобелой посредством данной процедуры,то во второй раз при попытке 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
|
||||
|
||||
![]() Цитата:
Код:
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
|
|||
|
|||
![]() о спс,и кстати вторая проблема решилась сама после того как добавил не просто jpg.assign(image1.picture) а еще и .graphic
|