-
Вот и ещё один дурдом к мировой помойке подключили и дерьмокодеров плодить начали...
-
Sam ti durdom2 , kak rabotat s vpn v Delphi ? P/s u mena s kodirovkoi oi beda !!!!
-
В упор не вижу в выложенных модулях 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" без этих функций?
-
unit JPEG_IO;
interface
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);
-
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.
-
Вау! У меня не вышло переписать IJL для Stream'а, но Slym ты мой спаситель!!!
-
Я так понял тема закрыта?
-
Чёта сплошные ошибки... Вопервых Slym не дописала : pfDevice: тип именно этот возвращается. Это вопервых... А вовторых при проверке: procedure IJLCheck(Code:Integer); begin if Code<>IJL_OK then raise EIJLException.Create(ijlErrorStr(Code)); end;
Хваленая билиотека постоянно генирирует код ошибки, прочитать его невозможно потому как на китайском... Народ кто как решил проблему? Или тут просто обсудили и все?
-
> Cola (07.01.11 15:02) [47]
> Вопервых Slym не дописала
Стыдно должно быть требовать ложку к миске дерьма. Дали ? Жуй и не жалуйся)
> Или тут просто обсудили и все?
Нет не все. Сейчас тебя начнем обсуждать)
-
Сергей М. у Вас что-т о по делу есть, если нет то флудите на других форумах.
Теперь по делу: Ошибку нашла, в соем коде по невнимательности... Проблемка другая, поток заработал но только вот изображение неверное передается... Оно построчно сдвинуто.... Кто с такой проблемкой встречался и как решил?
Для любителей пофлудить и поиздеваться над девушками - в игнор.
-
> Кто с такой проблемкой встречался и как решил? обычно решается вот так - > Ошибку нашла, в соем коде по невнимательности...
> Для любителей пофлудить и поиздеваться над девушками - в игнор. легко
|