Skip to main content

This site requires you to update your browser. Your browsing experience maybe affected by not having the most up to date version.

We've moved the forum!

Please use forum.silverstripe.org for any new questions (announcement).
The forum archive will stick around, but will be read only.

You can also use our Slack channel or StackOverflow to ask for help.
Check out our community overview for more options to contribute.

General Questions /

General questions about getting started with SilverStripe that don't fit in any of the categories above.

Moderators: martimiz, Sean, Ed, biapar, Willr, Ingo, swaiba

Resizing an Image?


Go to End


5 Posts   1047 Views

Avatar
Pix

Community Member, 158 Posts

17 November 2011 at 1:46pm

Hi!

I made a shortcode to embed images that I upload through the files and images tab. In my template, I would like to be able to resize this image but I can not really see how to do that. I've done it before using $SetWidth, ResizedImage, etc, with images in custom page types but it does not seem to work with the URL to the image I generate with my shortcode pardser. is that because it is an "image object" when it is a page type? I hope I am making sense here, I'm on the edge of my SilverStripe knowledge coding in the dark :0)

Basically I want to use a resize function on the source for an image tag, hopefully saving and caching the resized image like it seems to do in SS. How can I do that?

Thank you!

Avatar
JonoM

Community Member, 130 Posts

17 November 2011 at 2:28pm

You could try something like this - where SpecialImage returns an image object. From memory I think you can use for instance $SpecialImage.CroppedImage(200,100) to render the whole image tag, but <% control SpecialImage.CroppedImage(200,100) %> won't work, hence two control blocks.

		<% if SpecialImage %>
	
			<% control SpecialImage %>
				
				<% control CroppedImage(200,100) %>
				
					<img src="$Link" alt="" width="$Width" height="$Height" />
					
				<% end_control %>
				
			<% end_control %>
			
		<% end_if %>

Avatar
Pix

Community Member, 158 Posts

17 November 2011 at 4:37pm

Thank you for your reply!

But what is "SpecialImage"? Is that something particular to SS, or is that something I have to add to my page? I think that is my problem in that I am not dealing with an Image Object (at least I don't think I am), I just want to resize the image on a plain old image tag like:

<a class="rfb" href="./assets/Uploads/$directory/$imagename" title="$caption"><img alt="$caption" src="./assets/Uploads/$directory/$imagename->SetHeight(100);" /></a>

only that doesn't do anything :-(

If I take out the resize I see the image just fine, so I know the shortcode and template is working, like this:
<a class="rfb" href="./assets/Uploads/$directory/$imagename" title="$caption"><img alt="$caption" src="./assets/Uploads/$directory/$imagename" /></a>

See what I mean? How would I resize a dynamically generated image tag that I am assuming is not an image object?

Avatar
Pix

Community Member, 158 Posts

18 November 2011 at 6:30am

Hi,

Does anyone have any idea on this? Is there a way with SS to resize an image on an image tag? The image is not an Image Object attached to the page it's just in a folder on my site and I am generating an image tag to put it on the page. I've seens some PHP scripts for creating thumbnails on the fly and caching them, I suppose I could work that in somehow, but I was wondering if there was a way to do it with SS.

Avatar
JonoM

Community Member, 130 Posts

18 November 2011 at 2:07pm

Hi Pix,

If you want to use SilverStripe's image functions you'll need to be working with an image object. So if you have some kind of shortcode function - rather than using it to return a string such as the directory name, make your function fetch the relevant image (i.e. using a DataObject::get) and return it to the template so you can access SilverStripe's built in image functions.

Also $imagename->SetHeight(100) wouldn't work in a template even if $imagename was an image object, the syntax would be $imagename.SetHeight(100)