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

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

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

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.09.2009, 17:19   #1
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию Попиксельный доступ к TJPEGImage

Просьба указать ссылку или привести рабочий код, который даст возможность получить доступ к JPEG изображению попиксельно.

если это важно, то мой JPEG - grayscale (8 bit)

p.s. впервые пытаюсь работать с графикой в Дельфи.
что-то ничего не выходит... ;(
Serge_Bliznykov вне форума Ответить с цитированием
Старый 29.09.2009, 17:21   #2
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

http://www.programmersforum.ru/showt...ht=JPEG+Pixels
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 29.09.2009, 17:23   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Alex,
если Вы имеете в виду такой код:
Код:
procedure TForm1.Image1Click(Sender: TObject);
var
  b:TBitmap;
  Null_color:TColor;
  i, j : Integer;
begin
  b:=TBitmap.Create;
  b.Assign(image1.Picture.Graphic);
  for i:=0 to b.Height - 1 do begin
    for j:=0 to b.Width - 1 do begin
      null_color:=b.Canvas.Pixels[i,j];
      memoPixel.Lines.Add('p['+IntToStr(i)+','+IntToStr(j)+'] = '
            +InttoStr(Null_color));
    end;
  end;
  b.Free;
end;
то он работает, но выводит какую-то фигню... помоему, даже никак не связанную с изображением ;(
Serge_Bliznykov вне форума Ответить с цитированием
Старый 29.09.2009, 17:36   #4
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, JPEG, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  JP:TJPEGImage;
  BT:TBitMap;
  Color:TColor;
implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
 JP:=TJPEGImage.Create;
 JP.LoadFromFile('1.jpg');
 BT:=TBitMap.Create;
 BT.Assign(JP);
 Color:=BT.Canvas.Pixels[X,Y]
end;

end.
О!
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 29.09.2009, 22:57   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
Хорошо

Alex Cones, Спасибо!
"поигрался" с Вашим кодом. убедился, что всё работает.
Начал разбираться, что не так в моём...
Блин, оказалось местами координаты X и Y перепутаны.
т.е. в Pixels(x,y) сначала нужно передавать координату по горизонтали (то бишь Width ), а потом — по вертикали (соответственно Height)
заменил в своём коде кусок на
Код:
  for i:=0 to b.Height - 1 do begin
    for j:=0 to b.Width - 1 do begin
      null_color:=b.Canvas.Pixels[j,i];
      ...
    end;
и всё пошло как надо!

Но всё равно, СПАСИБО ВАМ БОЛЬШОЕ! иначе я бы ещё долго бродил в дебрях канвасов и имеджей
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Удаленный доступ DmitryN Помощь студентам 1 16.04.2009 09:33
Доступ к форме Vladya Помощь студентам 2 10.04.2009 16:18
TMemorystream -> TJPEGimage ( используя сеть ) Lime Работа с сетью в Delphi 2 17.02.2009 03:14
Доступ к реестру Terran Общие вопросы Delphi 1 27.03.2008 01:59
доступ в реестр vicvtor Win Api 6 28.11.2006 20:26