PDA

View Full Version : Resize Jpeg In AcquireImage



mojtaba_z
شنبه 19 خرداد 1386, 16:12 عصر
سلام
من از کامپوننت AcquireImage برای اسکن عکس استفاده میکنم . و عکس رو درون دیتابیس اکسس میریزم .
اما وقتی که عکس با این کامپوننت اسکن میشه و درون یک Tjpegimage یا TImage ریخته میشه اندازه خیلی بزرگی داره . چطور میتونم عکس را با Size دلخواه اسکن کنم ؟

Hamid_PaK
یک شنبه 20 خرداد 1386, 04:42 صبح
برای انتی الایز به یونیت janFX هم نیاز داره و یا آخرش رو حذف کن :



function imgThumb(const aBit: TBitmap;const _w,_h: Integer): TBitmap;
const
errImg = 'Invalid';
bolder = 1;
var
Ratio: Extended;
nHeight,nWidth,xOffset,yOffset: Integer;
copyBit: TBitmap;
begin
Result := TBitmap.Create;
with Result do
begin
Width := _w;
Height := _h;
Canvas.Brush.Color := clBlack;
Canvas.FillRect(Rect(0,0,Width,Height));
Canvas.Brush.Color := clWhite;
Canvas.FillRect(Rect(bolder,bolder,Width-bolder,Height-bolder));
end;
if aBit = nil then
begin
with Result.Canvas do
begin
Font.Name := 'arial';
Font.Style := [fsBold];
Font.Size := Floor((_w-bolder)/4.8);
TextOut((_w-TextWidth(errImg)) div 2,(_h-TextHeight(errImg)) div 2,errImg);
end;
end else begin

Ratio := aBit.Height / aBit.Width;
if Ratio > 1 then
begin
nWidth := Floor(_h/Ratio);
nHeight := _h;
xOffset := (_w-nWidth) div 2;
yOffset := 0;
end else begin
nWidth := _w;
nHeight := Floor(_w*Ratio);
xOffset := 0;
yOffset := (_h-nHeight) div 2;
end;

copyBit := TBitmap.Create;
copyBit.Width := nWidth;
copyBit.Height := nHeight;
Strecth(aBit,copyBit,ResampleFilters[2].Filter,ResampleFilters[2].Width);

Result.Canvas.StretchDraw(Rect(xOffset+bolder,yOff set+bolder,nWidth+xOffset-bolder,nHeight+yOffset-bolder),copyBit);
end;
end;


یا حق ...

mojtaba_z
یک شنبه 20 خرداد 1386, 07:35 صبح
سلام
ممنون از راهنمایی شما . با توجه به فاکنشن شما ، من باید مراحل زیر رو اننجام بدم :
1- اسکن عکس با AcquireImage و ذخیره در متغیر Jpg (که توسط کامپوننت انجام میشود)
2- تبدیل متغیر Jpg به Bmp (چگونه ؟)
3- تغییر اندازه متغیر Bmp (که با فانکشن imgThumb امکان پذیر است)
4- تبدیل متغیر Bmp به Jpg (چگونه ؟)
5- نمایش متغیر Jpg درون Timage1 (چگونه ؟)

Hamid_PaK
یک شنبه 20 خرداد 1386, 08:36 صبح
نه نیاز نیست که همه ی این مراحل رو انجام دهید :
1. احتمال زیاد بعد از اسکن شما امکان ذخیره در فرمت Bitmap رو باید داشته باشد.
2. یه فانکشن خودت بنویس که تغییر اندازه رو انجام بده.
3. برای نمایش تصاویر توی یه TImage از خصوصیت Picture.Assign استفاده کن.

همین ، یا حق ...

mojtaba_z
یک شنبه 20 خرداد 1386, 11:46 صبح
سلام
من هنوز توی انجام مراحل 2و4و5 موندم و نتونستم انجام بدم .
توی اجرای فانکشن imgThumb عبارت Floor رو خطا میده ؟
اگه ممکنه کد مربوط به مراحل 2و4و5 رو هم بنویسید .

با سپاس

مصطفی ساتکی
یک شنبه 20 خرداد 1386, 12:32 عصر
از کامپوننت های imageen استفاده کنید کامپوننتی به imageenio وجود داره که به راحتی می تونید با هر resulation ی که مایلید تصویر رو اسکن کنید و در ضمن در مورد نوشته های جناب Hamid_PaK (http://barnamenevis.org/forum/member.php?u=10875) که به شما توصیه کردند که از تابع StretchDraw مربوط به canvasمربوط به دلفی استفاده کنید که فراخوانی api تابع StretchBlt ی که از درونیابی درستی برای این کار استفاده نمی کنه و تصویر شما ارزش محتوایی خودشو از دست میده درونیابی راههای مختلف داره که از حوصله این بحث خارجه ولی تو iamgeen می تونه این بزرگنمایی(درونیابی) رو به راههای مختلف انجام بدید .

Hamid_PaK
یک شنبه 20 خرداد 1386, 13:23 عصر
Hamid_PaK که به شما توصیه کردند که از تابع StretchDraw مربوط به canvasمربوط به دلفی استفاده کنید که فراخوانی api تابع StretchBlt ی که از درونیابی درستی برای این کار استفاده نمی کنه
اگر بیشتر دقت کنید می بینید که با فرمان Strecth که در یک خط مانده به پایان تبدیل نوشته شده که از فرمانهای یونیت janFX هست ، عمل Resize بدرستی انجام خواهد گرفت .

یا حق ...

mojtaba_z
یک شنبه 20 خرداد 1386, 14:03 عصر
این کامپوننت imageen رو از کجا میتونم دانلود کنم ؟

Hamid_PaK
یک شنبه 20 خرداد 1386, 16:12 عصر
جستجو !

لینک دانلود (http://www.hicomponents.com/ndownloads_imageen.asp)

یا حق ...

Saeid59_m
دوشنبه 21 خرداد 1386, 13:54 عصر
جستجو !

لینک دانلود (http://www.hicomponents.com/ndownloads_imageen.asp)

یا حق ...
این لینک که جواب نمیده
برو تو سایت http://www.delphifans.com

ژاپنی ولی تو قسمت سرچ بنویس ImageEn
هر چیز دیگه ای هم خواستی تو همین سایت هست ولی سرعت داونلودش خیلی پائینه اگه از تلفن استفاده می کنی بی خیالش شو چون 14 مگه

mojtaba_z
دوشنبه 21 خرداد 1386, 14:57 عصر
دانلودش کردم ولی Trial هستش . سریالش رو دارین ؟

Hamid_PaK
دوشنبه 21 خرداد 1386, 17:57 عصر
این لینک که جواب نمیده
من که دانلود کردم ...

ImageEn 2.3.0 - Delphi 7.0 (http://www.hicomponents.com/downloads/230/DImageEn7.msi) (حجم فایل ~6.0 مگابایت)

یا حق ...