agarmur Posted June 20, 2022 Share Posted June 20, 2022 Hello, I am creating an API to create new product, I found a function copyImg, I know it is possible to put a url but I would like to know, if it is possible to give a url to his computer (C://.....) $image = new Image(); $image->id_product = $product->id; $image->position = Image::getHighestPosition($product->id) + $a++; if ($i >= 1) { $image->cover = false; } else { $image->cover = true; } $image->image_format = 'jpg'; $image->save(); $this->copyImg((int)$product->id, (int)$image->id, ($xml->urlImage), 'products', false); Thanks in advance ! Link to comment Share on other sites More sharing options...
Tom Girou Posted June 20, 2022 Share Posted June 20, 2022 May I ask you why are you creating an API to create products, when there's already the Prestashop webservice available ? Link to comment Share on other sites More sharing options...
agarmur Posted June 20, 2022 Author Share Posted June 20, 2022 il y a 3 minutes, Tom Girou a dit : May I ask you why are you creating an API to create products, when there's already the Prestashop webservice available ? I use a module that is connected to a WebserviceSpecificManagement created by me and inside I create products Link to comment Share on other sites More sharing options...
joseantgv Posted June 21, 2022 Share Posted June 21, 2022 Are you executing this script in localhost or in a server? Link to comment Share on other sites More sharing options...
agarmur Posted June 21, 2022 Author Share Posted June 21, 2022 il y a 57 minutes, joseantgv a dit : Are you executing this script in localhost or in a server? I solved my problem, here is my code for the product: $image = new Image(); $image->id_product = (int)$xml->id; $image->position = Image::getHighestPosition($xml->id) + 1; if ($i >= 1) { $image->cover = false; } else { $image->cover = true; } $image->image_format = 'jpg'; $image->save(); $this->copyImg((int)$product->id, (int)$image->id, $xml->urlImage, 'products', false); The function: private static function copyImg($id_entity, $id_image = null, $url = '', $entity = 'products', $regenerate = true) { $tmpfile = tempnam(_PS_TMP_IMG_DIR_, 'ps_import'); $watermark_types = explode(',', Configuration::get('WATERMARK_TYPES')); switch ($entity) { default: case 'products': $image_obj = new Image($id_image); $path = $image_obj->getPathForCreation(); break; case 'categories': $path = _PS_CAT_IMG_DIR_ . (int)$id_entity; break; case 'manufacturers': $path = _PS_MANU_IMG_DIR_ . (int)$id_entity; break; case 'suppliers': $path = _PS_SUPP_IMG_DIR_ . (int)$id_entity; break; case 'stores': $path = _PS_STORE_IMG_DIR_ . (int)$id_entity; break; } // $url = urldecode(trim($url)); // $parced_url = parse_url($url); if (isset($parced_url['path'])) { $uri = ltrim($parced_url['path'], '/'); $parts = explode('/', $uri); foreach ($parts as &$part) { $part = rawurlencode($part); } unset($part); $parced_url['path'] = '/' . implode('/', $parts); } if (isset($parced_url['query'])) { $query_parts = []; parse_str($parced_url['query'], $query_parts); $parced_url['query'] = http_build_query($query_parts); } if (!function_exists('http_build_url')) { require_once _PS_TOOL_DIR_ . 'http_build_url/http_build_url.php'; } // $url = http_build_url('', $parced_url); $orig_tmpfile = $tmpfile; if (Tools::copy($url, $tmpfile)) { // Evaluate the memory required to resize the image: if it's too much, you can't resize it. if (!ImageManager::checkImageMemoryLimit($tmpfile)) { @unlink($tmpfile); return false; } $tgt_width = $tgt_height = 0; $src_width = $src_height = 0; $error = 0; ImageManager::resize($tmpfile, $path . '.jpg', null, null, 'jpg', false, $error, $tgt_width, $tgt_height, 5, $src_width, $src_height); $images_types = ImageType::getImagesTypes($entity, true); if ($regenerate) { $previous_path = null; $path_infos = []; $path_infos[] = [$tgt_width, $tgt_height, $path . '.jpg']; foreach ($images_types as $image_type) { $tmpfile = self::get_best_path($image_type['width'], $image_type['height'], $path_infos); if (ImageManager::resize( $tmpfile, $path . '-' . stripslashes($image_type['name']) . '.jpg', $image_type['width'], $image_type['height'], 'jpg', false, $error, $tgt_width, $tgt_height, 5, $src_width, $src_height )) { // the last image should not be added in the candidate list if it's bigger than the original image if ($tgt_width <= $src_width && $tgt_height <= $src_height) { $path_infos[] = [$tgt_width, $tgt_height, $path . '-' . stripslashes($image_type['name']) . '.jpg']; } if ($entity == 'products') { if (is_file(_PS_TMP_IMG_DIR_ . 'product_mini_' . (int)$id_entity . '.jpg')) { unlink(_PS_TMP_IMG_DIR_ . 'product_mini_' . (int)$id_entity . '.jpg'); } if (is_file(_PS_TMP_IMG_DIR_ . 'product_mini_' . (int)$id_entity . '_' . (int)Context::getContext()->shop->id . '.jpg')) { unlink(_PS_TMP_IMG_DIR_ . 'product_mini_' . (int)$id_entity . '_' . (int)Context::getContext()->shop->id . '.jpg'); } } } if (in_array($image_type['id_image_type'], $watermark_types)) { Hook::exec('actionWatermark', ['id_image' => $id_image, 'id_product' => $id_entity]); } } } } else { @unlink($orig_tmpfile); return false; } unlink($orig_tmpfile); return true; } 2 Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now