Jump to content

Using an external image and resizing it


thomas
 Share

Recommended Posts

Hello everyone,

I'm new to Process Wire and I'm trying to set up a website for a magazine. My first task was to import a bunch of videos from another site into PW and it actually worked out quite good. Now I've got a bunch of pages with an external image reference in the image field. My idea was *not* to copy the whole lot of images, but to download and resize the ones that are requested. The first naiive attempt was this:

<img src="<?=$article->video_image->size(350,88)->url; ?>">

With 'video_image' being a full path to an image on another remote server.

Soo ... that didn't work. Do I need to copy the image to my server before resizing it? Or is there a trick to resize it and save only the "new" image on my server?

Thanks for any help! Loving PW so far!

thomas

  • Like 1
Link to comment
Share on other sites

Welcome to the forums Thomas. It's not possible to physically resize an image on another server, but you certainly can resize it with CSS or width and/or height attributes in the <img> tag. But if you want an image you can physically manipulate, then it has to be on a file system that ProcessWire can write to. You can tell ProcessWire to pull an image from another server like this:

$page->video_image = 'http://domain.com/path/to/file.jpg';
$page->save();

Once you've got the image in there, you can resize it like in your example. I'm assuming from the non-plural name 'video_image' that you've defined the field to only hold 1 image rather than many. Though the snippet above should work either way.

Note you may need to add a $page->of(false); before the code example above if you are executing it from a template file. ProcessWire delivers pages to templates in an output-ready state where entities are encoded and such (something you wouldn't want when saving a page). So you just have to disable output formatting to put the page in a state where it can be saved, otherwise ProcessWire will throw an error. This isn't usually necessary in other API contexts, outside of template files.

  • Like 4
Link to comment
Share on other sites

Hello Ryan,

thanks for the quick reply. That's pretty much what I did (I have a module pulling JSON data of the video server). My error was, that 'video_image' was a text field and not an image field!

Thanks for the great work,

thomas

  • Like 1
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...