The image resource name of the source image you want to compress, located on the current page. Please use the GetPageImageResName method to obtain this name.
The unique image identifier of the source image you want to compress, located on the current page, referring to an object of the type GdPictureImage. Please use the ExtractPageImage method to obtain this identifier.
Example





In This Topic
GdPicture14 Namespace / GdPicturePDF Class / ReplaceImageMRC Method / ReplaceImageMRC(String,Int32) Method

ReplaceImageMRC(String,Int32) Method

In This Topic
Replaces an image, specified by its resource name and the unique image identifier as well, located on the current page of the loaded PDF document, by compressing this image using the advanced mixed raster content (MRC) compression mechanism and draws a resulting image on the entire page surface.

Please note that both parameters relate to the same image located on the current page. At the same, this method can be used for image-based pages only, as the MRC engine always draws resulting images on the entire page surface. The attached example demonstrates the proper use of the method.

Syntax
'Declaration

 

Public Overloads Function ReplaceImageMRC( _

   ByVal ImageResName As String, _

   ByVal ImageID As Integer _

) As GdPictureStatus
public GdPictureStatus ReplaceImageMRC( 

   string ImageResName,

   int ImageID

)
public function ReplaceImageMRC( 

    ImageResName: String;

    ImageID: Integer

): GdPictureStatus; 
public function ReplaceImageMRC( 

   ImageResName : String,

   ImageID : int

) : GdPictureStatus;
public: GdPictureStatus ReplaceImageMRC( 

   string* ImageResName,

   int ImageID

) 
public:

GdPictureStatus ReplaceImageMRC( 

   String^ ImageResName,

   int ImageID

) 

Parameters

ImageResName
The image resource name of the source image you want to compress, located on the current page. Please use the GetPageImageResName method to obtain this name.
ImageID
The unique image identifier of the source image you want to compress, located on the current page, referring to an object of the type GdPictureImage. Please use the ExtractPageImage method to obtain this identifier.

Return Value

A member of the GdPictureStatus enumeration. If the method has been successfully followed, then the return value is GdPictureStatus.OK.

We strongly recommend always checking this status first.

Remarks
This method is only allowed for use with non-encrypted documents.

Be aware that this method can be used for image-based pages only, as the MRC engine draws a resulting image on the entire page surface. Please follow the attached example on how to properly use the method.

This method requires the MRC - Hyper Compression component to run.

Example
How to compress image-based pages in the PDF document using the MRC mechanism.
Dim caption As String = "Example: ReplaceImageMRC"

Using pdf As GdPicturePDF = New GdPicturePDF()

    Dim status As GdPictureStatus = pdf.LoadFromFile("source.pdf", False)

    If status = GdPictureStatus.OK Then

        'Setting MRC options.

        pdf.SetMRCImageBackgroundResolution(100)

        'You can set it to true to obtain a better quality rendering, but it produces a bigger file.

        pdf.SetMRCPreserveSmoothing(False)

        'You can also set the compression values for images here, for example:

        pdf.SetCompressionForBitonalImage(PdfCompression.PdfCompressionJBIG2)

        pdf.SetCompressionForColorImage(PdfCompression.PdfCompressionJPEG2000)

        'Using the negative value permits to specify better quality factor versus a compression rate.

        pdf.SetJpeg2000Quality(-60)

            

        Dim pageCount As Integer = pdf.GetPageCount()

        status = pdf.GetStat()

        Dim pageNo As Integer = 1

            

        While (pageNo <= pageCount) AndAlso (status = GdPictureStatus.OK)

            status = pdf.SelectPage(pageNo)

            If status = GdPictureStatus.OK Then

                'We can ignore hidden text in the example.

                Dim isPageImage As Boolean = pdf.IsPageImage(True)

                status = pdf.GetStat()

                If status = GdPictureStatus.OK Then

                    If isPageImage Then

                        'As the page is image-based, the image number is 1 and we can extract this image.

                        Dim imageID As Integer = pdf.ExtractPageImage(1)

                        status = pdf.GetStat()

                        If status = GdPictureStatus.OK Then

                            'Getting the resource name of the extracted image, the index of the image to be used here is 0.

                            Dim imageResName As String = pdf.GetPageImageResName(0)

                            status = pdf.GetStat()

                            If status = GdPictureStatus.OK Then

                                'The original image is replaced with the compressed image on the whole page surface here.

                                status = pdf.ReplaceImageMRC(imageResName, imageID)

                                'You need to dispose of the used image resource here.

                                GdPictureDocumentUtilities.DisposeImage(imageID)

                            End If

                        End If

                    End If

                End If

            End If

            pageNo += 1

        End While

        If status = GdPictureStatus.OK Then

            status = pdf.SaveToFile("dest.pdf", True)

            If status = GdPictureStatus.OK Then

                MessageBox.Show("The example has been followed successfully and the file has been saved.", caption)

            Else

                MessageBox.Show("The example has been followed successfully, but the file can't be saved. Status: " + status.ToString(), caption)

            End If

        Else

            MessageBox.Show("The example has NOT been followed successfully. Status: " + status.ToString(), caption)

        End If

    Else

        MessageBox.Show("The file can't be loaded. Status: " + status.ToString(), caption)

    End If

End Using
string caption = "Example: ReplaceImageMRC";

using (GdPicturePDF pdf = new GdPicturePDF())

{

    GdPictureStatus status = pdf.LoadFromFile("source.pdf", false);

    if (status == GdPictureStatus.OK)

    {

        //Setting MRC options.

        pdf.SetMRCImageBackgroundResolution(100);

        //You can set it to true to obtain a better quality rendering, but it produces a bigger file.

        pdf.SetMRCPreserveSmoothing(false);

        //You can also set the compression values for images here, for example:

        pdf.SetCompressionForBitonalImage(PdfCompression.PdfCompressionJBIG2);

        pdf.SetCompressionForColorImage(PdfCompression.PdfCompressionJPEG2000);

        //Using the negative value permits to specify better quality factor versus a compression rate.

        pdf.SetJpeg2000Quality(-60);

            

        int pageCount = pdf.GetPageCount();

        status = pdf.GetStat();

            

        for (int pageNo = 1; (pageNo <= pageCount) && (status == GdPictureStatus.OK); pageNo++)

        {

            status = pdf.SelectPage(pageNo);

            if (status == GdPictureStatus.OK)

            {

                //We can ignore hidden text in the example.

                bool isPageImage = pdf.IsPageImage(true);

                status = pdf.GetStat();

                if (status == GdPictureStatus.OK)

                {

                    if (isPageImage)

                    {

                        //As the page is image-based, the image number is 1 and we can extract this image.

                        int imageID = pdf.ExtractPageImage(1);

                        status = pdf.GetStat();

                        if (status == GdPictureStatus.OK)

                        {

                            //Getting the resource name of the extracted image, the index of the image to be used here is 0.

                            string imageResName = pdf.GetPageImageResName(0);

                            status = pdf.GetStat();

                            if (status == GdPictureStatus.OK)

                            {

                                //The original image is replaced with the compressed image on the whole page surface here.

                                status = pdf.ReplaceImageMRC(imageResName, imageID);

                                //You need to dispose of the used image resource here.

                                GdPictureDocumentUtilities.DisposeImage(imageID);

                            }

                        }

                    }

                }

            }

        }

        if (status == GdPictureStatus.OK)

        {

            status = pdf.SaveToFile("dest.pdf", true);

            if (status == GdPictureStatus.OK)

                MessageBox.Show("The example has been followed successfully and the file has been saved.", caption);

            else

                MessageBox.Show("The example has been followed successfully, but the file can't be saved. Status: " + status.ToString(), caption);

        }

        else

            MessageBox.Show("The example has NOT been followed successfully. Status: " + status.ToString(), caption);

    }

    else

        MessageBox.Show("The file can't be loaded. Status: " + status.ToString(), caption);

}
See Also