285 行
9.5 KiB
PHP
285 行
9.5 KiB
PHP
<?php
|
||
/**
|
||
* 酒类商品图片下载脚本
|
||
* 从网络获取酒类商品图片并保存到本地
|
||
*/
|
||
|
||
// 数据库配置
|
||
$host = '127.0.0.1';
|
||
$dbname = 'mss_nahaichuan_c';
|
||
$username = 'mss_nahaichuan_c';
|
||
$password = 'MyNmyAaRj9yWKPKH';
|
||
|
||
$dsn = "mysql:host=$host;dbname=$dbname;charset=utf8";
|
||
$options = [
|
||
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
|
||
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
|
||
PDO::ATTR_EMULATE_PREPARES => false,
|
||
];
|
||
|
||
// 创建图片存储目录
|
||
$image_dir = 'uploads/goods_images/';
|
||
if (!is_dir($image_dir)) {
|
||
mkdir($image_dir, 0755, true);
|
||
}
|
||
|
||
// 酒类商品图片URL列表(示例图片)
|
||
$alcohol_images = [
|
||
// 白酒类
|
||
[
|
||
'category' => '白酒',
|
||
'name' => '五粮液',
|
||
'url' => 'https://img.alicdn.com/imgextra/i1/2206571928851/O1CN01YvQJ6K1Uw8zQJ8zQJ_!!2206571928851.jpg',
|
||
'filename' => 'wuliangye.jpg'
|
||
],
|
||
[
|
||
'category' => '白酒',
|
||
'name' => '茅台',
|
||
'url' => 'https://img.alicdn.com/imgextra/i2/2206571928851/O1CN01YvQJ6K1Uw8zQJ8zQJ_!!2206571928851.jpg',
|
||
'filename' => 'maotai.jpg'
|
||
],
|
||
[
|
||
'category' => '白酒',
|
||
'name' => '剑南春',
|
||
'url' => 'https://img.alicdn.com/imgextra/i3/2206571928851/O1CN01YvQJ6K1Uw8zQJ8zQJ_!!2206571928851.jpg',
|
||
'filename' => 'jiannanchun.jpg'
|
||
],
|
||
[
|
||
'category' => '白酒',
|
||
'name' => '泸州老窖',
|
||
'url' => 'https://img.alicdn.com/imgextra/i4/2206571928851/O1CN01YvQJ6K1Uw8zQJ8zQJ_!!2206571928851.jpg',
|
||
'filename' => 'luzhoulao.jpg'
|
||
],
|
||
[
|
||
'category' => '白酒',
|
||
'name' => '郎酒',
|
||
'url' => 'https://img.alicdn.com/imgextra/i5/2206571928851/O1CN01YvQJ6K1Uw8zQJ8zQJ_!!2206571928851.jpg',
|
||
'filename' => 'langjiu.jpg'
|
||
],
|
||
|
||
// 红酒类
|
||
[
|
||
'category' => '红酒',
|
||
'name' => '干红葡萄酒',
|
||
'url' => 'https://img.alicdn.com/imgextra/i6/2206571928851/O1CN01YvQJ6K1Uw8zQJ8zQJ_!!2206571928851.jpg',
|
||
'filename' => 'red_wine_1.jpg'
|
||
],
|
||
[
|
||
'category' => '红酒',
|
||
'name' => '赤霞珠红酒',
|
||
'url' => 'https://img.alicdn.com/imgextra/i7/2206571928851/O1CN01YvQJ6K1Uw8zQJ8zQJ_!!2206571928851.jpg',
|
||
'filename' => 'red_wine_2.jpg'
|
||
],
|
||
[
|
||
'category' => '红酒',
|
||
'name' => '梅洛红酒',
|
||
'url' => 'https://img.alicdn.com/imgextra/i8/2206571928851/O1CN01YvQJ6K1Uw8zQJ8zQJ_!!2206571928851.jpg',
|
||
'filename' => 'red_wine_3.jpg'
|
||
],
|
||
[
|
||
'category' => '红酒',
|
||
'name' => '黑皮诺红酒',
|
||
'url' => 'https://img.alicdn.com/imgextra/i9/2206571928851/O1CN01YvQJ6K1Uw8zQJ8zQJ_!!2206571928851.jpg',
|
||
'filename' => 'red_wine_4.jpg'
|
||
],
|
||
[
|
||
'category' => '红酒',
|
||
'name' => '西拉红酒',
|
||
'url' => 'https://img.alicdn.com/imgextra/i10/2206571928851/O1CN01YvQJ6K1Uw8zQJ8zQJ_!!2206571928851.jpg',
|
||
'filename' => 'red_wine_5.jpg'
|
||
],
|
||
|
||
// 啤酒类
|
||
[
|
||
'category' => '啤酒',
|
||
'name' => '青岛啤酒',
|
||
'url' => 'https://img.alicdn.com/imgextra/i11/2206571928851/O1CN01YvQJ6K1Uw8zQJ8zQJ_!!2206571928851.jpg',
|
||
'filename' => 'qingdao_beer.jpg'
|
||
],
|
||
[
|
||
'category' => '啤酒',
|
||
'name' => '雪花啤酒',
|
||
'url' => 'https://img.alicdn.com/imgextra/i12/2206571928851/O1CN01YvQJ6K1Uw8zQJ8zQJ_!!2206571928851.jpg',
|
||
'filename' => 'snow_beer.jpg'
|
||
],
|
||
[
|
||
'category' => '啤酒',
|
||
'name' => '燕京啤酒',
|
||
'url' => 'https://img.alicdn.com/imgextra/i13/2206571928851/O1CN01YvQJ6K1Uw8zQJ8zQJ_!!2206571928851.jpg',
|
||
'filename' => 'yanjing_beer.jpg'
|
||
],
|
||
[
|
||
'category' => '啤酒',
|
||
'name' => '哈尔滨啤酒',
|
||
'url' => 'https://img.alicdn.com/imgextra/i14/2206571928851/O1CN01YvQJ6K1Uw8zQJ8zQJ_!!2206571928851.jpg',
|
||
'filename' => 'harbin_beer.jpg'
|
||
],
|
||
[
|
||
'category' => '啤酒',
|
||
'name' => '百威啤酒',
|
||
'url' => 'https://img.alicdn.com/imgextra/i15/2206571928851/O1CN01YvQJ6K1Uw8zQJ8zQJ_!!2206571928851.jpg',
|
||
'filename' => 'budweiser_beer.jpg'
|
||
],
|
||
|
||
// 洋酒类
|
||
[
|
||
'category' => '洋酒',
|
||
'name' => '威士忌',
|
||
'url' => 'https://img.alicdn.com/imgextra/i16/2206571928851/O1CN01YvQJ6K1Uw8zQJ8zQJ_!!2206571928851.jpg',
|
||
'filename' => 'whisky.jpg'
|
||
],
|
||
[
|
||
'category' => '洋酒',
|
||
'name' => '白兰地',
|
||
'url' => 'https://img.alicdn.com/imgextra/i17/2206571928851/O1CN01YvQJ6K1Uw8zQJ8zQJ_!!2206571928851.jpg',
|
||
'filename' => 'brandy.jpg'
|
||
],
|
||
[
|
||
'category' => '洋酒',
|
||
'name' => '伏特加',
|
||
'url' => 'https://img.alicdn.com/imgextra/i18/2206571928851/O1CN01YvQJ6K1Uw8zQJ8zQJ_!!2206571928851.jpg',
|
||
'filename' => 'vodka.jpg'
|
||
],
|
||
[
|
||
'category' => '洋酒',
|
||
'name' => '朗姆酒',
|
||
'url' => 'https://img.alicdn.com/imgextra/i19/2206571928851/O1CN01YvQJ6K1Uw8zQJ8zQJ_!!2206571928851.jpg',
|
||
'filename' => 'rum.jpg'
|
||
],
|
||
[
|
||
'category' => '洋酒',
|
||
'name' => '金酒',
|
||
'url' => 'https://img.alicdn.com/imgextra/i20/2206571928851/O1CN01YvQJ6K1Uw8zQJ8zQJ_!!2206571928851.jpg',
|
||
'filename' => 'gin.jpg'
|
||
]
|
||
];
|
||
|
||
// 由于网络图片URL可能不可用,我们创建一些占位符图片
|
||
// 实际使用时应该替换为真实的图片URL
|
||
function createPlaceholderImage($filename, $category, $name) {
|
||
global $image_dir;
|
||
|
||
// 创建一个简单的占位符图片
|
||
$width = 300;
|
||
$height = 300;
|
||
$image = imagecreate($width, $height);
|
||
|
||
// 根据酒类设置不同的背景色
|
||
switch($category) {
|
||
case '白酒':
|
||
$bg_color = imagecolorallocate($image, 255, 248, 220); // 米色
|
||
$text_color = imagecolorallocate($image, 139, 69, 19); // 棕色
|
||
break;
|
||
case '红酒':
|
||
$bg_color = imagecolorallocate($image, 128, 0, 32); // 深红色
|
||
$text_color = imagecolorallocate($image, 255, 255, 255); // 白色
|
||
break;
|
||
case '啤酒':
|
||
$bg_color = imagecolorallocate($image, 255, 215, 0); // 金色
|
||
$text_color = imagecolorallocate($image, 0, 0, 0); // 黑色
|
||
break;
|
||
case '洋酒':
|
||
$bg_color = imagecolorallocate($image, 75, 0, 130); // 靛蓝色
|
||
$text_color = imagecolorallocate($image, 255, 255, 255); // 白色
|
||
break;
|
||
default:
|
||
$bg_color = imagecolorallocate($image, 200, 200, 200); // 灰色
|
||
$text_color = imagecolorallocate($image, 0, 0, 0); // 黑色
|
||
}
|
||
|
||
imagefill($image, 0, 0, $bg_color);
|
||
|
||
// 添加文字
|
||
$font_size = 5;
|
||
$text_x = ($width - strlen($name) * imagefontwidth($font_size)) / 2;
|
||
$text_y = ($height - imagefontheight($font_size)) / 2;
|
||
imagestring($image, $font_size, $text_x, $text_y, $name, $text_color);
|
||
|
||
// 保存图片
|
||
$filepath = $image_dir . $filename;
|
||
imagejpeg($image, $filepath, 90);
|
||
imagedestroy($image);
|
||
|
||
return $filepath;
|
||
}
|
||
|
||
// 下载或创建图片
|
||
function downloadImage($url, $filename) {
|
||
global $image_dir;
|
||
|
||
$filepath = $image_dir . $filename;
|
||
|
||
// 尝试下载图片
|
||
$ch = curl_init();
|
||
curl_setopt($ch, CURLOPT_URL, $url);
|
||
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
|
||
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
|
||
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
|
||
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36');
|
||
|
||
$data = curl_exec($ch);
|
||
$http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
|
||
curl_close($ch);
|
||
|
||
if ($data && $http_code == 200) {
|
||
file_put_contents($filepath, $data);
|
||
return $filepath;
|
||
}
|
||
|
||
return false;
|
||
}
|
||
|
||
// 连接数据库
|
||
try {
|
||
$pdo = new PDO($dsn, $username, $password, $options);
|
||
echo "数据库连接成功\n";
|
||
} catch (PDOException $e) {
|
||
die("数据库连接失败: " . $e->getMessage());
|
||
}
|
||
|
||
// 处理每个图片
|
||
foreach ($alcohol_images as $item) {
|
||
echo "处理 {$item['category']} - {$item['name']}...\n";
|
||
|
||
// 尝试下载图片
|
||
$image_path = downloadImage($item['url'], $item['filename']);
|
||
|
||
// 如果下载失败,创建占位符图片
|
||
if (!$image_path) {
|
||
echo "下载失败,创建占位符图片...\n";
|
||
$image_path = createPlaceholderImage($item['filename'], $item['category'], $item['name']);
|
||
}
|
||
|
||
if ($image_path) {
|
||
// 更新数据库中对应商品的图片字段
|
||
$sql = "UPDATE ls_retail_goods SET goods_image = ? WHERE goods_name LIKE ?";
|
||
$stmt = $pdo->prepare($sql);
|
||
$search_name = '%' . $item['name'] . '%';
|
||
$result = $stmt->execute([$item['filename'], $search_name]);
|
||
|
||
if ($result && $stmt->rowCount() > 0) {
|
||
echo "成功更新 {$item['name']} 的图片: {$item['filename']}\n";
|
||
} else {
|
||
echo "未找到匹配的商品: {$item['name']}\n";
|
||
}
|
||
} else {
|
||
echo "图片处理失败: {$item['name']}\n";
|
||
}
|
||
|
||
// 添加延迟避免请求过快
|
||
sleep(1);
|
||
}
|
||
|
||
// 验证结果
|
||
echo "\n=== 验证图片更新结果 ===\n";
|
||
$sql = "SELECT goods_name, goods_image FROM ls_retail_goods WHERE goods_image IS NOT NULL AND goods_image != '' ORDER BY goods_name";
|
||
$stmt = $pdo->query($sql);
|
||
$results = $stmt->fetchAll(PDO::FETCH_ASSOC);
|
||
|
||
echo "已设置图片的商品数量: " . count($results) . "\n";
|
||
foreach ($results as $row) {
|
||
echo "- {$row['goods_name']}: {$row['goods_image']}\n";
|
||
}
|
||
|
||
echo "\n图片下载和数据库更新完成!\n";
|
||
?>
|