2012-12-17 19 views
6

एक TJPEGImage छवि को कैसे साफ़ करें?एक जेपीईजी छवि को कैसे साफ़ करें?

JPG.Width := 0 चाल काम नहीं करेगा। इसके अलावा मैं एक खाली बिटमैप (0x0 पिक्सल) बनाना नहीं चाहता हूं और इसे जेपीईजी को असाइन करना चाहता हूं।

+4

आप वस्तु को मुक्त करने नहीं करना चाहते हैं पर पृष्ठभूमि पर Tshape घटक, लेकिन आप नहीं चाहते हैं कि यह अब स्मृति पर कब्जा कर ले, तो आप क्या करना चाहते हैं? –

+0

@Rob। इसे बाद में पुन: उपयोग किया जाएगा। कई बार। वैसे भी, कारण इससे कोई फर्क नहीं पड़ता। अगर मैं अतिरिक्त संसाधनों का उपभोग किए बिना छवि को मंजूरी दे दी जा सकती है (बम्मी के सुझाव के रूप में नई वस्तुओं को बनाते हुए) तो मैं सिर्फ सादा उत्सुक हूं। – Ampere

+0

यदि आप सब कुछ हटाना चाहते हैं तो मैं भी नहीं देख सकता कि आप क्या रख रहे हैं। जब छवि चली गई है तो क्या बचा है? वहां क्या राज्य है? –

उत्तर

9

आप कुछ इस तरह (interposed वर्ग संरक्षित तरीकों का उपयोग करने के लिए यहाँ प्रयोग किया जाता है) का उपयोग हो सकता है:

type 
    TJPEGImage = class(jpeg.TJPEGImage); 

implementation 

procedure TForm1.Button1Click(Sender: TObject); 
var 
    JPEGImage: TJPEGImage; 
begin 
    JPEGImage := TJPEGImage.Create; 
    try 
    // this should recreate the internal bitmap 
    JPEGImage.NewBitmap; 
    // this should recreate the internal image stream 
    JPEGImage.NewImage; 
    // here the memory used by the image should be released 
    finally 
    JPEGImage.Free; 
    end; 
end; 
+1

कूल। धन्यवाद। ऊपर वोट, और स्वीकार किया। :) – Ampere

+0

आपका स्वागत है! ;-) – TLama

3

आप FreeAndNil का उपयोग करें और छवि खाली रखने के लिए नहीं करना चाहते हैं ...

Procedure EmptyJPG(jpg:TJpegImage); 
var 
j:TJpegImage; 
begin 
    j := TJpegImage.Create; 
    try 
    jpg.Assign(j); 
    finally 
    j.Free; 
    end; 
end; 
+2

@Altar: मुझे लगता है कि आप 'मेरे प्रश्न में/मूल प्रश्न में', और 'ओपी में' नहीं हैं। ओपी (= मूल पोस्टर) आप हैं। –

+1

यह एक समाधान नहीं है। यह मूल जेपीईजीआईमेज को मुक्त करने और पुनर्निर्माण करने से अधिक कुशल नहीं है (और वास्तव में कम है, क्योंकि अब आपने इसे फेंकने के अलावा किसी अन्य कारण के लिए एक नई वस्तु बनाई है)। जबकि मूल प्रश्न का कोई मतलब नहीं है, आपका प्रस्तावित समाधान भी कम समझ में आता है। (डाउनवॉटिंग नहीं, बीटीडब्लू; बस बिंदु नहीं देखें।) –

+0

@ केनवाइट, पूर्ण सहमति है, मुझे लगता है कि एकमात्र कारण मधुमक्खियों की तरह कुछ हो सकता है: EmptyJPG (FMyMyReadOnlyPropertyJPEG) शुरू करें; Showmessage ('पहले सेट करें:' + IntToStr (FMyMyReadOnlyPropertyJPEG.CompressionQuality)) अंत; – bummi

0

जगह TImage घटक

Image1 : Timage 
. 
. 
Image1.Picture.Graphic.Assign(nil); 
+0

यह मेरे प्रश्न से कैसे संबंधित है? – Ampere

संबंधित मुद्दे