Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

RLE- алгоритм PackBits

87K
13 декабря 2012 года
TOXICSIS
1 / / 13.12.2012
При открытии кистей формата *.abr дошел до раздела растровых данных.
Для декодирования растровых данных нужен RLE-алгоритм PackBits, которые используется в формате TIFF.
Вот мой код, но он не работает, когда присваиваю пикселям значения. Помогите найти ошибку или скиньте плз алгоритм.
Нашел несколько исходников на сишнике:
https://github.com/Caged/groomlake/blob/master/lib/groom_lake/brush.rb
http://code.metager.de/source/xref/kde/calligra/krita/plugins/paintops/libbrush/kis_abr_brush_collection.cpp#abr_v1_brush_name

Код:
procedure DecodeRLE(var varFile:file);
 var
  ScanlineLenght: array of word;
  i,j,x,w:integer;
  tmp,ch,c,y,ImageEnd:shortint;
begin
 
  SetLength(ScanlineLenght, ABR.BrushHeight);


 for i:=0 to ABR.BrushHeight do
  ScanlineLenght[i]:=ReadWord(varFile, ScanlineLenght[i]);


 for i:=0 to ABR.BrushHeight do
  while j<ScanlineLenght[i] do
    begin
      BlockRead(varFile, tmp, 1);
      inc(j);

      if tmp>=128
      then tmp:=tmp-128;

      if tmp<0
      then
       begin
        if tmp=-128
        then continue;
        tmp:=-tmp+1;
        BlockRead(varFile, ch, 1);
        j:=j+1;
        for c:=0 to tmp do
          begin
            ImageData[y]:=ch;
            y:=y+1;
          end;
        end
       else
        begin
          for c:=0 to (tmp+1) do
            begin
              ImageData[y]:=ch;
              y:=y+1;
              j:=j+1;
            end;
        end;
       end;

  x:=0;
  for i:=0 to ABR.BrushHeight do
  for j:=0 to Abr.BrushWidth do
    begin
     Form1.Image1.Canvas.Pixels[i,j]:=ImageData[x];
     inc(x);

    end;



 end;
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог