aleksandaril
aleksandaril

Reputation: 170

Programmatically resize an image in a report

My C# application generates a Crystal Report that contains many images with varying size, orientation, and aspect ratio. To make them appear correctly in the report, I use a white Square Canvas and center the image inside. This makes lot of wasted space:

enter image description here

Is it possible to resize each picture in the report to the appropriate size from C#? I have found a way to resize the images here, but I don't know if I can perform these steps from c#, especially when it comes to "Calculating and setting Width and Height to the proper number of twips."

I know the size of my image in C#, but can it be passed to and implemented in the report? Images are inside an xml file in base64 format.

Designer View: enter image description here

Upvotes: 0

Views: 3152

Answers (1)

Furtiro
Furtiro

Reputation: 449

Okay, i don't have a working solution but an idea that might help you ( and i hope it will )

I searched a programmatically way to do what you want, and i don't find anything. Unless the fact that you can manipulate your FieldObject with C#, it can't be used in your report.

So, i'll try to guide you with some screenshoots, but i am French and my screens will be in french, so sorry for the bad translations !

You can write a formula to change the display of your BinaryImage in your subreport. I just found a way to change the width of you data, not the height.

So, assuming my image is stored in "ARTICLE" table, and the name of the column is "ART_IMAGE". I put my data in the detail section and create a new formula, ignore the created formula, you need to access to the "formatting formulas" :

enter image description here

Here in my screen it is called "Formules de mise en forme". In the left you can see my simple report and on the right the formula panel, i clicked on my details section and i can see my only field. Now right click on this field and create a new formatting formula :

enter image description here

A pop up is displayed, you'll need to choose something like that in english " Adjusting the width" :

enter image description here

Now, you have to return the new width of your current image, a way to know what is the current width is to store it in a field in your database. So if in your database you have a field for your image, and a field like image_width. In my example i have a field name ART_DIMENSION and i store the width of the image. The tricky part is that this formula accept twips not inch or cm. For you information 1 inch = 1440 twips. So in my example here is the formula :

enter image description here

So for each image to display, the width of my image will be the width stored in "ART_DIMENSIONS" ( with the good convert : inch to twips )

In your report design, with a formula like this which set the width dynamically for your image, you can set the section and your image object with a very small width. In this case your images will be displayed one by another because the section width will be edited for each image to display.

I tried to be very clear, hope it will help you, ask me any questions if you don't understand something.

Regards,

Upvotes: 2

Related Questions