百胜IPOS图片处理

2018-06-19修改

对ipos_sptpk这个表添加一个字段,bj,用来标记图片是否下载成功(0为没有图片,1为有图片)

添加的时候自动添加0,图片下载成功更新为1

前景:由于不使用ERP商品目录来上传图片,导致没有生成bse格式的图片,需要手动去修改生成,然后IPOS下载图片。

部份代码为网上找的

为了解决这个问题使用自动化脚本:

本次共分2个步骤:

1、添加ipos_sptpk 这个表的内容,把商品目录里面的商品条码插入到ipos_sptpk中,以下文件设置凌晨2点自动执行

<?php
//自动生成ipos_sptpk的商品名称和图片名称
$db_host="192.168.1.xxx";      //MYSQL服务器名
$db_user="root";       //MYSQL用户名
$db_pass="xxxx";       //MYSQL用户对应密码
$db_name="xxxx";      //要操作的数据库
$link=mysql_connect($db_host,$db_user,$db_pass)or die("不能连接到服务器".mysql_error());
mysql_select_db($db_name,$link);   
mysql_query("SET NAMES 'GBK'",$link);
$time=date("Y-m-d h:m:s");
$sql_cx="select pic_dm from ipos_sptpk order by id desc";   //查询最大的pic_dm
$result=mysql_query($sql_cx,$link);
$row=mysql_fetch_array($result);
$pic_dm=$row['pic_dm']+1;

$sql_sptm="select spdm from com_base_shangpin where spdm not in (select spdm from ipos_sptpk)";    //查询没有生成sptpk的商品代码
$result_sptm=mysql_query($sql_sptm,$link);
while ($row_sptm=mysql_fetch_array($result_sptm)){
	$sql_spid="select id from com_base_shangpin where spdm='{$row_sptm['spdm']}'";
	$result_spid=mysql_query($sql_spid,$link);
	$row_spid=mysql_fetch_array($result_spid);
	$spid=$row_spid['id'];
	$sql_insert="insert into ipos_sptpk(sp_id,spdm,pic_name,pic_dm,lastchanged,bj) values ('{$spid}','{$row_sptm['spdm']}','{$row_sptm['spdm']}','{$pic_dm}','{$time}',0)";   //插入没有生成图片的商品
	$result_insert=mysql_query($sql_insert,$link);
	$pic_dm=$pic_dm+1;
	
}

?>

2、自动处理图片,设置3点自动执行

    1)、从ipos_sptpk取当天下载的条码,并下载到本地服务器上

$link=mysql_connect($db_host,$db_user,$db_pass)or die("不能连接到服务器".mysql_error());
mysql_select_db($db_name,$link);   
mysql_query("SET NAMES 'GBK'",$link);
$end_time=date('Y-m-d',strtotime("+1 day"));
$start_time= date('Y-m-d',strtotime("-1 week"));
$dir="../ipos_pic/zdwjj/";    //中转目录,用完删除里面的文件,等待下次使用
$dir2="../ipos_pic/big/";     //IPOS大图目录 
$dir3="../ipos_pic/small/";
$sql_cx="select spdm from ipos_sptpk where lastchanged BETWEEN '{$start_time}' and '{$end_time}' and bj=0";
$result=mysql_query($sql_cx,$link);
while ($row=mysql_fetch_array($result)){
	$spdm=$row['spdm'];
	$url="http://192.168.1.XXX/".$spdm.".jpg";
	if(check_file_exists($url)){
	copy($url,$dir.$spdm.".jpg");
	copy($url,$dir2.$spdm.".jpg");
	$sql_update="update ipos_sptpk set bj=1 where spdm='{$spdm}'";
	mysql_query($sql_update,$link);
	}else{
		$url="http://192.168.1.XXX/ipos/web/ipos_pic/404_big.jpg";   //此处直接下载404图片
		$url2="http://192.168.1.XXX/ipos/web/ipos_pic/404_small.jpg";  //下载已经处理好的404图片,所有用同一张就行了
		copy($url,$dir2.$spdm.".jpg");
		copy($url2,$dir3.$spdm.".jpg");
	}
	}
require('slt.php');	   //调用生成缩略图文件
require('del.php');        //调用删除中转目录下的文件
function check_file_exists($file){   //判断远程远程 是否存在函数


    // 远程文件
    if(strtolower(substr($file, 0, 4))=='http'){


        $header = get_headers($file, true);


        return isset($header[0]) && (strpos($header[0], '200') || strpos($header[0], '304'));


    // 本地文件
    }else{
        return file_exists($file);
    }


}

   2)slt.php   此为生成缩略图

<?php
 
//处理所有文件,请设置为 '.'
error_reporting(0); 
$only = '.';

//如果不希望覆盖已经存在的图片 将此行设为0;
$over = 1;

//是否处理GIF图,0为不处理
$regif = 0;

require('funs.php');

	$file = array();
	$dir = "../ipos_pic/zdwjj/";
	$newdir = "../ipos_pic/small/";
	$w = intval(50);
	$h = intval(50);
	$d = @dir($dir) or die('目录不存在!');	

	while ($a=$d->read()){
		$type = substr(strrchr($a,"."),1);
		if($a!=='.' && $a!=='..'){
			if(is_dir($dir.'/'.$a)){
				$zdir[]=$a;
			} elseif($type=='jpg' || $type=='gif' || $type=='bmp' || $type=='png') {
				if(strstr($a, $only)){
					$file[]=$dir.'/'.$a;
				}
			}			
		}
	}
	$rand = rand(100,999);
	$img = new image($dir, $newdir);
	$img->over = $over;
	$img->regif= $regif;
	
	
	foreach ($file as $key){
		$src = $img->reImg($key, $w, $h);

	}
	
?>

    2)funs.php

<?php
function mkdirs($l1, $l2 = 0777){
	if(!is_dir($l1)){
		mkdirs(dirname($l1), $l2);		
		return @mkdir($l1, $l2);
	}
	return true;
}

function savefile($l1, $l2=''){		
	if(function_exists(file_put_contents)){
		file_put_contents($l1, $l2);
	} else{
		$fp = @fopen($l1, 'wb');
		@fwrite($fp, $l2);
		fclose($fp);
	}
}

function getfix($l1){
	return end(explode('.', $l1));
}

function checkfix($l1, $l2){
	if(!is_array($l2)){
		$l2 = explode(',', str_replace(' ', '', $l2));
	}
	return in_array($l1, $l2) ? 1 : 0;
}

class image{
	var $src;		
	var $newsrc;
	var $allowtype = array('.jpg','.gif','.png','.jpeg'); 	
	var $regif   = 0;
	var $keep = 0;
	var $over = 0;
	var $dir;	
	var $newdir;	


	function __construct($l1=null, $l2=null){
		$this->dir	  = $l1 ? $l1 : "./images/temp";
		$this->newdir = $l2 ? $l2 : "./images/s";
	}
	
	function image($l1=null, $l2=null){
		$this->__construct($l1, $l2);
	}
	
	function reName($src){
		$l1 = substr(md5($src),10,10).strrchr($src,".");	
		$l1  = $this->w.'_'.$this->h.'_'.$l1;	
		return $this->newdir.'/'.$l1;
	}
	
	function Mini($src,$w,$h, $q=80){	
		$this->src = $src;
		$this->w = $w;
		$this->h = $h;
		
		if(strrchr($src, ".") == ".gif" && $this->regif == 0){
			return $this->src;
		}	
		
		if(!$this->keep){
			$newsrc = $this->reName($src);
		} else {
			$src = str_replace('\\', '/', $src);
			$newsrc = $this->newdir.strrchr($src, "/");
		}
		
		if(file_exists($newsrc) && $this->over == 0){
			return $newsrc;
		}
		
		if(strstr($src, "http://") && !strstr($src, $_SERVER['HTTP_HOST'])){
			$src = $this->getimg($src);
		}	

		$arr = getimagesize($src);		
		$ow = $arr[0];
		$oh = $arr[1];
		$ot = $arr[2];		
		switch($ot){
			case 1:
				$im = imagecreatefromgif($src);
				break;
			case 2:
				$im = imagecreatefromjpeg($src);
				break;
			case 3:
				$im = imagecreatefrompng($src);
				break;
			default:
				return 0;
		}

		$nim = imagecreatetruecolor($w,$h);
		$k1 = round($h/$w,2);
		$k2 = round($oh/$ow,2);
		if ($k1<$k2){
			$oow = $ow;
			$ooh = round($ow*$k1);
			$sw = 0;
			$sh = ($oh-$ooh)/2;
		}
		else {
			$oow = $oh/$k1;
			$ooh = $oh;
			$sw = ($ow-$oow)/2;
			$sh = 0;
		}

		if(function_exists(imagecopyresampled)){
			imagecopyresampled($nim,$im,0,0,$sw,$sh,$w,$h,$oow,$ooh);			
		}
		else {
			imagecopyresized($nim,$im,0,0,$sw,$sh,$w,$h,$oow,$ooh);
		}

		if(!is_dir($this->newdir)){
			@mkdir($this->newdir);
		}	
			
		switch($ot){
			case 1:
				$rs = imagegif($nim,$newsrc);
				break;
			case 2:
				$rs = imagejpeg($nim,$newsrc,$q);
				break;
			case 3:
				$rs = imagepng($nim,$newsrc);
				break;
			default:
				return 0;
		}

		return $newsrc;		 	
	}
			
	function getimg($l1){
		$l2 = $this->dir.'/'.substr(md5($l1),10,10).strrchr($l1,".");
		if(file_exists($l2)){			
			return $l2;
		}

		$img = file_get_contents($l1);					
		if($img){
			if(!is_dir($this->dir)){
				@mkdir($this->dir);
			}	
			savefile($l2, $img);
			return $l2;
		}				
	}
	
	function reImg($src, $w, $h, $q=80){
		$this->keep = 1;
		return $this->Mini($src, $w, $h, $q);
	}	
}

    3)del.php 

删除中转目录中的文件

<?php
function delDirAndFile( $dirName ) 
{ 
if ( $handle = opendir( "$dirName" ) ) { 
while ( false !== ( $item = readdir( $handle ) ) ) { 
if ( $item != "." && $item != ".." ) { 
if ( is_dir( "$dirName/$item" ) ) { 
delDirAndFile( "$dirName/$item" ); 
} else { 
if( unlink( "$dirName/$item" ) ); 
} 
} 
} 
closedir( $handle ); 
} 
} 

delDirAndFile('../ipos_pic/zdwjj'); 
?>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值