Конференция "Сети" » управление удаленным рабочим столом
 
  • Плохиш © (10.05.10 19:44) [40]
    Вот и ещё один дурдом к мировой помойке подключили и дерьмокодеров плодить начали...
  • Sveta (11.05.10 14:38) [41]
    Sam ti durdom2 , kak rabotat s vpn v Delphi ?
    P/s
    u mena s kodirovkoi oi beda !!!!
  • Monk (18.09.10 22:46) [42]
    В упор не вижу в выложенных модулях IntelJpegLibrary функций

    procedure SaveBmpToJpegStream(Bitmap:TBitmap;Stream: TMemoryStream; const Quality: integer);
    procedure LoadBmpFromJpegStream(bitmap: TBitmap;  Stream:TMemoryStream;
    const SetPixelFormat:boolean=true; const Scale:TIJLScale=ijlFull);

    ТОЛЬКО
    procedure SaveBmpToJpegFile  (Bitmap:TBitmap;const FileName:string; const Quality: integer);
    procedure LoadBmpFromJpegFile(Bitmap:TBitmap;const FileName:string;
    const SetPixelFormat:boolean=true; const Scale:TIJLScale=ijlFull);

    в JPEG_IO.
    И где они? кто там "переписал под ijl" без этих функций?
  • Slym © (20.09.10 05:56) [43]
    unit JPEG_IO;

    interface
    {$WARN SYMBOL_PLATFORM OFF}
    {$WARNINGS OFF}

    uses Windows, SysUtils, Classes, Graphics, IJL;

    type
     EIJLException = class(Exception);

    type
     TIJLScale=(ijlFull, ijlHalf, ijlQuarter, ijlEighth);

    procedure SaveBmpToJpegFile  (Bitmap:TBitmap;const FileName:string; const Quality: integer);
    procedure SaveBmpToJpegStream(Bitmap:TBitmap;Stream: TMemoryStream; const Quality: integer);

    procedure LoadBmpFromJpegFile(Bitmap:TBitmap;const FileName:string;
     const SetPixelFormat:boolean=true; const Scale:TIJLScale=ijlFull);
    procedure LoadBmpFromJpegStream(bitmap: TBitmap;  Stream:TMemoryStream;
     const SetPixelFormat:boolean=true; const Scale:TIJLScale=ijlFull);

    implementation

    procedure IJLCheck(Code:Integer);
    begin
     if Code<>IJL_OK then
       raise EIJLException.Create(ijlErrorStr(Code));
    end;

    procedure SaveBmpToJpegFile(Bitmap:TBitmap;const FileName:string; const Quality: integer);
    var
     jcprops:TJPEG_CORE_PROPERTIES;
     DIB: TDIBSection;
    begin
     FillChar(jcprops, SizeOf (jcprops), 0);
     IJLCheck(ijlInit(@jcprops));
     try
       with jcprops do
       begin
         case bitmap.PixelFormat of
           pf8bit:
           begin
             DIBChannels:=1;
             DIBColor:=IJL_G;
           end;
           pf24bit:
           begin
             DIBChannels:=3;
             DIBColor:=IJL_BGR;
           end;
           else raise EIJLException.Create('Cannot save bitmap as JPEG with specified PixelFormat');
         end;
         FillChar(DIB, SizeOf(DIB), 0);
         Win32Check(GetObject(Bitmap.Handle, SizeOf(DIB),@DIB)<>0);
         DIBBytes:= PByte(DIB.dsBm.bmBits);
         DIBWidth  := DIB.dsBm.bmWidth;
         DIBHeight :=-DIB.dsBm.bmHeight;
         DIBPadBytes:=((DIBWidth*DIBChannels+3) and -$04)-(DIBWidth*DIBChannels);

         JPGFile := PChar(FileName);

         JPGWidth := DIBWidth;
         JPGHeight:= -DIBHeight;
         JPGChannels:=3;
         JPGColor := IJL_YCBCR;
         jquality := quality;
       end;
       IJLCheck(ijlWrite(@jcprops, IJL_JFILE_WRITEWHOLEIMAGE));
     finally
       IJLCheck(ijlFree(@jcprops));
     end;
    end;

    procedure SaveBmpToJpegStream(Bitmap:TBitmap;Stream: TMemoryStream; const Quality:integer);
    var
     jcprops:TJPEG_CORE_PROPERTIES;
     DIB: TDIBSection;
    begin
     FillChar(jcprops, SizeOf (jcprops), 0);
     IJLCheck(ijlInit(@jcprops));
     try
       with jcprops do
       begin
         case bitmap.PixelFormat of
           pf8bit:
           begin
             DIBChannels:=1;
             DIBColor:=IJL_G;
           end;
           pf24bit:
           begin
             DIBChannels:=3;
             DIBColor:=IJL_BGR;
           end;
           else raise EIJLException.Create('Cannot save bitmap as JPEG with specified PixelFormat');
         end;
         FillChar(DIB, SizeOf(DIB), 0);
         Win32Check(GetObject(Bitmap.Handle, SizeOf(DIB),@DIB)<>0);
         DIBBytes:= PByte(DIB.dsBm.bmBits);
         DIBWidth  := DIB.dsBm.bmWidth;
         DIBHeight :=-DIB.dsBm.bmHeight;
         DIBPadBytes:=((DIBWidth*DIBChannels+3) and -$04)-(DIBWidth*DIBChannels);
         
         Stream.Size:= Abs(DIBHeight*DIBWidth*DIBChannels);
         JPGBytes := Stream.Memory;
         JPGSizeBytes := Stream.Size;

         JPGWidth := DIBWidth;
         JPGHeight:= -DIBHeight;
         JPGChannels:=3;
         JPGColor := IJL_YCBCR;
         jquality := quality;
       end;
       IJLCheck(ijlWrite(@jcprops, IJL_JBUFF_WRITEWHOLEIMAGE));
       Stream.Size:=jcprops.JPGSizeBytes;
     finally
       IJLCheck(ijlFree(@jcprops));
     end;
    end;

    const
     ScaleMul:array[TIJLScale] of DWORD=(1,2,4,8);

    procedure LoadBmpFromJpegFile(Bitmap:TBitmap;const FileName:string;
     const SetPixelFormat:boolean=true; const Scale:TIJLScale=ijlFull);
    const
     ScaleFileIOType:array[TIJLScale] of TIJLIOTYPE=(IJL_JFILE_READWHOLEIMAGE,IJL_JFILE_READONEHALF,IJL_JFILE_READONEQUAR TER,IJL_JFILE_READONEEIGHTH);
    var
     jcprops: TJPEG_CORE_PROPERTIES;
     DIB: TDIBSection;
    begin
     if not Assigned (Bitmap) then Exit;

     FillChar(jcprops,SizeOf(jcprops),0);
     IJLCheck(ijlInit(@jcprops));
     try
       jcprops.JPGFile:=PChar(FileName);
       IJLCheck(ijlRead(@jcprops, IJL_JFILE_READPARAMS));

       if (jcprops.JPGChannels<>1) and (jcprops.JPGChannels<>3) then
         raise EIJLException.CreateFmt('Cannot load JPEG with %d Channels',[jcprops.JPGChannels]);

       Bitmap.Width:=0;
       Bitmap.Height:=0;

       if SetPixelFormat then
       begin
         jcprops.DIBChannels:=jcprops.JPGChannels;
         if jcprops.DIBChannels=1 then
           Bitmap.PixelFormat:= pf8Bit
         else
           Bitmap.PixelFormat:= pf24Bit;
       end else
       begin
         case Bitmap.PixelFormat of
           pf8Bit:  jcprops.DIBChannels:= 1;
           pf24Bit: jcprops.DIBChannels:= 3;
           else raise EIJLException.Create('Cannot load in bitmap with specified PixelFormat');
         end;
       end;
       if jcprops.DIBChannels=1 then
         jcprops.DIBColor:= IJL_G
       else
         jcprops.DIBColor:= IJL_BGR;

       Bitmap.Width :=(jcprops.JPGWidth + ScaleMul[Scale]-1) div ScaleMul[Scale];
       Bitmap.Height:=(jcprops.JPGHeight+ ScaleMul[Scale]-1) div ScaleMul[Scale];

       FillChar(DIB, SizeOf (DIB), 0);
       Win32Check(GetObject(Bitmap.Handle, SizeOf(DIB),@DIB)<>0);
       jcprops.DIBBytes := PByte(DIB.dsBm.bmBits);
       jcprops.DIBWidth := DIB.dsBm.bmWidth;
       jcprops.DIBHeight:= -DIB.dsBm.bmHeight;
       jcprops.DIBPadBytes:=((jcprops.DIBWidth*jcprops.DIBChannels+3) and -$04)-(jcprops.DIBWidth*jcprops.DIBChannels);

       IJLCheck(ijlRead(@jcprops, ScaleFileIOType[Scale]));
     finally
       IJLCheck(ijlFree(@jcprops));
     end;
     Bitmap.Modified:=True;
    end;

    procedure LoadBmpFromJpegStream(bitmap: TBitmap;  Stream:TMemoryStream;
     const SetPixelFormat:boolean=true; const Scale:TIJLScale=ijlFull);
    const
     ScaleBuffIOType:array[TIJLScale] of TIJLIOTYPE=(IJL_JBUFF_READWHOLEIMAGE,IJL_JBUFF_READONEHALF,IJL_JBUFF_READONEQUAR TER,IJL_JBUFF_READONEEIGHTH);
    var
     jcprops: TJPEG_CORE_PROPERTIES;
     DIB: TDIBSection;
    begin
     if not Assigned (Bitmap) then Exit;

     FillChar(jcprops,SizeOf(jcprops),0);
     IJLCheck(ijlInit(@jcprops));
     try
       jcprops.JPGBytes := PByte(Stream.Memory);

  • Slym © (20.09.10 05:56) [44]
       jcprops.JPGSizeBytes:= Stream.Size;
       IJLCheck(ijlRead(@jcprops, IJL_JBUFF_READPARAMS));

       if (jcprops.JPGChannels<>1) and (jcprops.JPGChannels<>3) then
         raise EIJLException.CreateFmt('Cannot load JPEG with %d Channels',[jcprops.JPGChannels]);

       Bitmap.Width:=0;
       Bitmap.Height:=0;

       if SetPixelFormat then
       begin
         jcprops.DIBChannels:=jcprops.JPGChannels;
         if jcprops.DIBChannels=1 then
           Bitmap.PixelFormat:= pf8Bit
         else
           Bitmap.PixelFormat:= pf24Bit;
       end else
       begin
         case Bitmap.PixelFormat of
           pf8Bit:  jcprops.DIBChannels:= 1;
           pf24Bit: jcprops.DIBChannels:= 3;
           else raise EIJLException.Create('Cannot load in bitmap with specified PixelFormat');
         end;
       end;
       if jcprops.DIBChannels=1 then
         jcprops.DIBColor:= IJL_G
       else
         jcprops.DIBColor:= IJL_BGR;

       Bitmap.Width :=(jcprops.JPGWidth + ScaleMul[Scale]-1) div ScaleMul[Scale];
       Bitmap.Height:=(jcprops.JPGHeight+ ScaleMul[Scale]-1) div ScaleMul[Scale];

       FillChar(DIB, SizeOf (DIB), 0);
       Win32Check(GetObject(Bitmap.Handle, SizeOf(DIB),@DIB)<>0);
       jcprops.DIBBytes := PByte(DIB.dsBm.bmBits);
       jcprops.DIBWidth := DIB.dsBm.bmWidth;
       jcprops.DIBHeight:= -DIB.dsBm.bmHeight;
       jcprops.DIBPadBytes:=((jcprops.DIBWidth*jcprops.DIBChannels+3) and -$04)-(jcprops.DIBWidth*jcprops.DIBChannels);

       IJLCheck(ijlRead(@jcprops, ScaleBuffIOType[Scale]));
     finally
       IJLCheck(ijlFree(@jcprops));
     end;
     Bitmap.Modified:=True;
    end;

    end.


  • KingComp (03.10.10 20:14) [45]
    Вау! У меня не вышло переписать IJL для Stream'а, но Slym ты мой спаситель!!!
  • ditron © (14.11.10 03:05) [46]
    Я так понял тема закрыта?
  • Cola (07.01.11 15:02) [47]
    Чёта сплошные ошибки...
    Вопервых Slym  не дописала : pfDevice:
    тип именно этот возвращается.
    Это вопервых...
    А вовторых при проверке:
    procedure IJLCheck(Code:Integer);
    begin
    if Code<>IJL_OK then
      raise EIJLException.Create(ijlErrorStr(Code));
    end;

    Хваленая билиотека постоянно генирирует код ошибки, прочитать его невозможно потому как на китайском...
    Народ кто как решил проблему? Или тут просто обсудили и все?
  • Сергей М. © (07.01.11 20:21) [48]

    > Cola   (07.01.11 15:02) [47]


    > Вопервых Slym  не дописала


    Стыдно должно быть требовать ложку к миске дерьма.
    Дали ? Жуй и не жалуйся)


    > Или тут просто обсудили и все?


    Нет не все. Сейчас тебя начнем обсуждать)
  • Cola (08.01.11 00:08) [49]
    Сергей М. у Вас что-т о по делу есть, если нет  то флудите на других форумах.

    Теперь по делу:
    Ошибку нашла, в соем коде по невнимательности...
    Проблемка другая, поток заработал но только вот изображение неверное передается... Оно построчно сдвинуто.... Кто с такой проблемкой встречался и как решил?

    Для любителей пофлудить и поиздеваться над девушками - в игнор.
  • sniknik © (08.01.11 02:17) [50]
    > Кто с такой проблемкой встречался и как решил?
    обычно решается вот так -
    > Ошибку нашла, в соем коде по невнимательности...

    > Для любителей пофлудить и поиздеваться над девушками - в игнор.
    легко
 
Конференция "Сети" » управление удаленным рабочим столом
Есть новые Нет новых   [134436   +25][b:0][p:0.005]