9 hours ago, Alex Oancea said:Did you managed to find a solution? I'm receiving the same warning and the code is not warning, until I enable the debug mode. With debug mode activated it's working properly.
I also tried to add a breakpoint in this function, but I can't get there.
Thanks!
Hi Alex, I finally made it posting the information straight to the different tables in the database. If you want to do it, you need to use the following tables:
- ps_product
- ps_product_lang
- ps_product_shop
- ps_category_product
- ps_image*
- ps_image_shop
*Once created a new line on ps_image, you have to retrieve the id_image field to create the image folders structure for the image, i.e., if the id_image is 749, the folder structure will be [root_folder]\img\p\7\4\9\ and you have to upload the different images to this last folder. I leave you the html form and the php code I use to upload the image file, create the folder structure and resize the image to the different sizes you need for the store. The php file should be on your stores root folder, and you have to upload a square image to prevent loosing information, because the resize function crops the image. With this code you just have to upload one image and it generates copies in the different size the store uses.
<form action="https://yourstore.com/upload_image.php" method="post" enctype="multipart/form-data" name="form1"> <input name="userfile[]" type="file" id="userfile[]" required> <input name="id" type="hidden" id="id" value="<%=request.querystring("id")%>"> <input type="submit" name="button" id="button" value="Enviar"> </form>
<?php /** * easy image resize function * @param $file - file name to resize * @param $string - The image data, as a string * @param $width - new image width * @param $height - new image height * @param $proportional - keep image proportional, default is no * @param $output - name of the new file (include path if needed) * @param $delete_original - if true the original image will be deleted * @param $use_linux_commands - if set to true will use "rm" to delete the image, if false will use PHP unlink * @param $quality - enter 1-100 (100 is best quality) default is 100 * @return boolean|resource */ function smart_resize_image($file, $string = null, $width = 0, $height = 0, $proportional = false, $output = 'file', $delete_original = true, $use_linux_commands = false, $quality = 100 ) { if ( $height <= 0 && $width <= 0 ) return false; if ( $file === null && $string === null ) return false; # Setting defaults and meta $info = $file !== null ? getimagesize($file) : getimagesizefromstring($string); $image = ''; $final_width = 0; $final_height = 0; list($width_old, $height_old) = $info; $cropHeight = $cropWidth = 0; # Calculating proportionality if ($proportional) { if ($width == 0) $factor = $height/$height_old; elseif ($height == 0) $factor = $width/$width_old; else $factor = min( $width / $width_old, $height / $height_old ); $final_width = round( $width_old * $factor ); $final_height = round( $height_old * $factor ); } else { $final_width = ( $width <= 0 ) ? $width_old : $width; $final_height = ( $height <= 0 ) ? $height_old : $height; $widthX = $width_old / $width; $heightX = $height_old / $height; $x = min($widthX, $heightX); $cropWidth = ($width_old - $width * $x) / 2; $cropHeight = ($height_old - $height * $x) / 2; } # Loading image to memory according to type switch ( $info[2] ) { case IMAGETYPE_JPEG: $file !== null ? $image = imagecreatefromjpeg($file) : $image = imagecreatefromstring($string); break; case IMAGETYPE_GIF: $file !== null ? $image = imagecreatefromgif($file) : $image = imagecreatefromstring($string); break; case IMAGETYPE_PNG: $file !== null ? $image = imagecreatefrompng($file) : $image = imagecreatefromstring($string); break; default: return false; } # This is the resizing/resampling/transparency-preserving magic $image_resized = imagecreatetruecolor( $final_width, $final_height ); if ( ($info[2] == IMAGETYPE_GIF) || ($info[2] == IMAGETYPE_PNG) ) { $transparency = imagecolortransparent($image); $palletsize = imagecolorstotal($image); if ($transparency >= 0 && $transparency < $palletsize) { $transparent_color = imagecolorsforindex($image, $transparency); $transparency = imagecolorallocate($image_resized, $transparent_color['red'], $transparent_color['green'], $transparent_color['blue']); imagefill($image_resized, 0, 0, $transparency); imagecolortransparent($image_resized, $transparency); } elseif ($info[2] == IMAGETYPE_PNG) { imagealphablending($image_resized, false); $color = imagecolorallocatealpha($image_resized, 0, 0, 0, 127); imagefill($image_resized, 0, 0, $color); imagesavealpha($image_resized, true); } } imagecopyresampled($image_resized, $image, 0, 0, $cropWidth, $cropHeight, $final_width, $final_height, $width_old - 2 * $cropWidth, $height_old - 2 * $cropHeight); # Taking care of original, if needed if ( $delete_original ) { if ( $use_linux_commands ) exec('rm '.$file); else @unlink($file); } # Preparing a method of providing result switch ( strtolower($output) ) { case 'browser': $mime = image_type_to_mime_type($info[2]); header("Content-type: $mime"); $output = NULL; break; case 'file': $output = $file; break; case 'return': return $image_resized; break; default: break; } # Writing image according to type to the output destination and image quality switch ( $info[2] ) { case IMAGETYPE_GIF: imagegif($image_resized, $output); break; case IMAGETYPE_JPEG: imagejpeg($image_resized, $output, $quality); break; case IMAGETYPE_PNG: $quality = 9 - (int)((0.9*$quality)/10.0); imagepng($image_resized, $output, $quality); break; default: return false; } return true; } $id = $_POST['id'] ; //id_image $id_product = $_POST['id_product'] ; $caracteres_id = str_split($id); $ruta = "./img/p/"; foreach ($caracteres_id as &$valor) { $ruta = $ruta . $valor . "/"; if (!file_exists($ruta)) { mkdir($ruta, 0775, true); } } $N = 1; //Files to upload. In this case, just one, the main image for($i=0; $i<$N; $i++) { if (is_uploaded_file($_FILES['userfile']['tmp_name'][$i])) { $split_path = explode("/", $_FILES['userfile']['name'][$i]); $split_path = end($split_path); $extension = explode(".", $split_path); if (end($extension) == "php" || end($extension) == "php3") { echo "No valid filetype"; } else { $RUTA_UPLOADED = $ruta; $NOMBRE_FILE = $id . end($extension); if ($i==0) { if (end($extension) == "jpg" || end($extension) == "png" || end($extension) == "JPG" || end($extension) == "PNG" ) { $NOMBRE_FILE = $id . end($extension); } else { //header("Location: default.asp?tablon=1&error=2"); echo "No valid filetype. Please use .jpg or .png files"; die(""); } } move_uploaded_file($_FILES['userfile']['tmp_name'][$i], $RUTA_UPLOADED . $id . "." . end($extension)); } } } //indicate which file to resize (can be any type jpg/png/gif/etc...) $file = $ruta . $id . '.' . end($extension); //indicate the path and name for the new resized file $resizedFilea = $ruta . $id . '-small_default.'.end($extension); $resizedFileb = $ruta . $id . '-medium_default.'.end($extension); $resizedFilec = $ruta . $id . '-large_default.'.end($extension); $resizedFiled = $ruta . $id . '-home_default.'.end($extension); $resizedFilee = $ruta . $id . '-cart_default.'.end($extension); //call the function (when passing path to pic) smart_resize_image($file , null, 98 , 98 , false , $resizedFilea , false , false ,100 ); smart_resize_image($file , null, 452 , 452 , false , $resizedFileb , false , false ,100 ); smart_resize_image($file , null, 800 , 800 , false , $resizedFilec , false , false ,100 ); smart_resize_image($file , null, 250 , 250 , false , $resizedFiled , false , false ,100 ); smart_resize_image($file , null, 125 , 125 , false , $resizedFilee , false , false ,100 ); //done! header("Location: http://yourdomain.com/yourpage.php"); die(); ?>
I hope it's useful for you, or anyone else who need it. Best regards