델파이4.0, 오라클10g 사용이구요
여기 검색했는데 적당한(?) 답을 못찾아서요
일단 jpg, bmp 상관없이 이미지를 읽은후에
크기를 체크해서 800*600 크기 이상이면
800을 기준으로 width 를 줄이고
그 이하면 그대로 오라클에 저장하려고 하거든요
잘안되네요...
혹시 아시는분 소스좀 부탁드립니다;;;
<!--CodeS-->
If OpenPictureDialog1.Execute Then Begin
BitImage := TBitmap.Create;
JpegImage := TJPEGImage.Create;
// BitImage.pixelformat := pf24bit;
MS_JPG := TMemoryStream.Create;
MS_BMP := TMemoryStream.Create;
MS_JPG.Position := 0;
MS_BMP.Position := 0;
JpegImage.LoadFromFile( OpenPictureDialog1.FileName );
BitImage.Assign( TBitmap( JpegImage ) );
if JpegImage.Width > 100 then begin
BitImage.Width:= 50;
BitImage.Height:= 50;
BitImage.Canvas.StretchDraw(Rect(0,0,BitImage.Width,BitImage.Height),BitImage);
BitImage.SaveToStream( MS_BMP );
with qryINSTER_JPG do begin
Close;
ParamByName( 'vPICTURE' ).LoadFromStream( MS_BMP, ftBlob );
try
ExecSQL;
except
Showmessage('사진 등록시 오류 발생(IM_EMPPICJPG)!!!');
JPEGImage.Free;
BitImage.Free;
MS_JPG.Free;
MS_BMP.Free;
fC_DM.allrollback;
Exit;
end;
end;
JPEGImage.Free;
BitImage.Free;
MS_JPG.Free;
MS_BMP.Free;
fC_DM.allcommit;
spPIC_INQ.Click;
end;
end;
<!--CodeE-->
800:축소된높이=원본너비:원본높이
축소된높이=800*원본높이/원본너비
var
JpegImage: TJPEGImage;
SrcBitmap, DestBitmap: TBitmap;
begin
SrcBitmap := TBitmap.Create;
DestBitmap := TBitmap.Create;
try
JpegImage := TJPEGImage.Create;
try
JpegImage.LoadFromFile(OpenPictureDialog1.FileName);
SrcBitmap.Assign(JpegImage);
finally
JpegImage.Free;
end;
DestBitmap.Width := 800;
DestBitmap.Height := (800 * SrcBitmap.Height) div SrcBitmap.Width;
DestBitmap.Canvas.StretchDraw(Rect(0, 0, DestBitmap.Width, DestBitmap.Height), SrcBitmap);
// DestBitmap = 가로 800으로 축소된 이미지
finally
SrcBitmap.Free;
DestBitmap.Free;
end;
end;