What I want to do is check in my template file (list.phtml, the product list), if an image exists or not. I can output an existing image like that:
<img src="<?php echo $block->getViewFileUrl('Images/imagename.png'); ?>" alt="">
My problem is: before showing that I want to check if that image exists. But of course file_exists only takes a relative path and I cannot find out how to get a relative path for my image. Is that possible in magento2 and if so - how?
Related
Migrated my joomla site to WP. The images were in a folder named 'asets' in joomla site. I copied the dir to wp and images work fine while url structure is raw.
But if I change the url permalink, the link to images also change.
like
sitename/?p=123 image path = sitename/asets/imagefile this works.
sitename/samplepost image path = sitename/post-name/asets/imagefile image not found
sitename/archive/123 image path = sitename/archive/asets/imagefile image not found
Please help me to solve this problem.
Just use absloute path or relative path with slash at start of path to get the root path.
I guss your HTML code look now like this:
<img src="assets/imagefile.jpg" alt="" />
So is it a relative path, the browser add the src to current url.
But if you change this to relative path from root it's will be work:
<img src="/assets/imagefile.jpg" alt="" />
Or using full absolute path:
<img src="http://example.com/assets/imagefile.jpg" alt="" />
All about HTML file paths
More important thing, in wordpress you must to work only in theme directory scope And use get_stylesheet_directory_uri() function.
Your code need to look like this:
<img src="<?php echo get_stylesheet_directory_uri(); ?>/assets/imagefile.jpg" alt="" />
I am using PHP to upload images in my web application. The images are stored in some directory on the server while their paths are stored directly in MySQL database.
The upload goes very well and images get in the folder but the problem is accessing thoses images with their path field stored in the database : i am not yet able to find the correct form of the path i should use, now am using the realPath and dirname functions to help me get the path so finally an example of path is C:\wamp\www\webroot\img.png (since am on Windows using wampserver) So when i do something like :
<img src="$image->path" />
i get no image shown in the browser and when i inspect it i get the expected code like :
<img src="C:\wamp\www\webroot\img.png" />
which means that this path format is not correct to show the image.
I have tried many things : i took the same path and acced it with the browser and it showed me the image (with the file protocol automatically) so i added file:// to the image path but nothing was new. I have also tried to acces it as a web url and with that it goes will for example it shows the image when putting
localhost/webroot/img.png
But what i need exactly is being able to store and retrive the image file again. So is it a file system probelm ? is the code platform independant ?
I will be very grateful for any help
Thank you.
You can't show an image with its path, but with its URL.
In PHP, we use to save the filename only in MySQL and after, you display the image with <img src="path/to/img/<?php echo $image->filename; ?>" />
That's all!
Add the file protocal to your path.
<img src="file:///<?php echo $image->path; ?>" />.
The best thing you could have to done is save the image in a folder inside your project/website folder. Then save the path to the image from the root folder in the DB.
Example: I uploaded a an image of filename "image.png" inside "Img" folder in the Website Root Folder. Then I will save "Img/image.png" inside my DB.
So anytime I want to reference the image, I will just use
<img src="/<?php echo $image->path; ?>" />
Or
<img src="<?php echo $image->path; ?>" />
Sorry for wasting your time, i have solved the problem. It was an issue with how my application is accessed. It should be accessed from only a directory called web so every path should be referenced from that directory !!.
how can i set image url in page ?
In image you can see I have tried by three ways but it not work.
Images are located under image folder of active theme.
You have three image tags all pointing to different urls of which two appear malformed.
The middle image tag in your screenshot seems the most accurate but you may want to add a semicolon after the right paranthesis.
If all three files are supposed to refer to the same image, then replace the first and last image tags with the middle one.
Then if it still doesnt work then replace bloginfo('template_directory') with the actual location to the images relative to document root on the server but put the value in quotes. For example, if your images are in the subfolder images in folder imageset on your site, then you could use
"http://www.whatever.com/imageset/images" or "/imageset/images".
which results in the code:
<img src="<?php echo "/imageset/images"; ?>/images/banner1.jpg" alt="">
or even better:
<img src="/imageset/images/images/banner1.jpg" alt="">
Try as follows <img src="../images/banner1.jpg" alt="">
I have a main domain that users can upload images to which are then viewed in a slider so multiple images (sometimes up to 50) are loaded by the page on loading. I am trying to access the same images on a subdomain but it isn't working very well.
If I use
<img src="<? echo 'http://www.mysite.co.uk/'.$row['imageLocation']; ?>">
the images load but it is very slow
If I use
<img src="<? echo '/home/myname/public_html/mysite.co.uk/'.$row['imageLocation']; ?>">
the images aren't displayed despite the path being correct. If I use the same path for getting the images sizes (getimagesize) it returns the correct results so I'm sure the path is correct.
The images arent shown because you echo the path to the user first, but not the file itself and then the users browser loads them asynchronously. He cannot access any parent directory from mysite.co.uk only child directories.
The PHP can load them because it runs on the server itself before it is returning anything.
What you could do is using the readfile() function from PHP in an extra PHP file like getimages.php or just use the first solution, which cannot be improved in speed except you will change the image sizes, which might be your main problem here.
If you want to directly echo image file content, use this.
<img src="data:image/jpeg;base64,<?php echo base64_encode('/home/myname/public_html/mysite.co.uk/'.$row['imageLocation']); ?>" />
I have uploaded an image folder in my child theme on wordpress-images->homeimages->myimage.jpg. When i go to mywebsiteexample.com/images/homeimages/myimage.jpg, it returns that page is not available and as a result i cannot use relative path in img src to call the images.
you could do this way as like
mywebsiteexample.com/wp-content/themes/themefoldername/images/homeimages/myimage.jpg
For example
Use this
to get the current active theme directory
you can call something like to load the image
<img src="<?php echo bloginfo('template_url');?>/images/homeimages/myimage.jpg"/>
Hope it may help