唉,都是摄像头惹的祸 :-(

    • 上传代码
    • 适配
    • 自动化
    • 完整代码
    • 测试
      • Android端
        • 上传
        • 上传结果
      • Iphone
        • 上传
        • 上传结果
      • 服务器端情况
    • 总结

先上个福利图 :)

首先说一下,写这篇博客的原因。大致可为以下几点:

  • 新买的android手机掉在了地上,摄像头摔得不能聚焦了,卖家还不给维修 :(
  • 手头有一个老旧的Iphone,然而不会IOS开发,所以决定使用网页形式来替代
  • 写博客需要一些手绘的流程图或者示意图,而电脑上的作图工具用起来不是很顺手。

    综合上面的原因,就为自己写了一个解决没有高清照片问题的php网页,用来转储Iphone拍摄的照片,用于博客的书写。


上传代码

正好博主本人电脑上配置好了PHP+Apache+MySQL的环境,当然了。使用Java或者Python或者其他的语言也是可以的,配置好相关的环境就可以了。

为了尽可能使这次的工作量最少,最简单,这里使用了PHP作为了我的开发语言。另本次试验的核心是图片的转储,于是也没有添加数据库的上传记录,这些东西也就是自己用,实际的开发中,各方面都得做的完善一点,谨慎一点的。

<?php

header("Content-Type:text/html;charset=utf-8");
$path = "F:/phpimage/";

$imgtype=$_REQUEST['imgtype'];

$rand_number = rand(1,100000);
$server_name = $imgtype=="notgif"?$path."$rand_number".".png":$path."$rand_number.".$imgtype;

if($_FILES['photo']['error']>0){
    die("上传文件出错了!".$_FILES['photo']['error']);
}

if(move_uploaded_file($_FILES['photo']['tmp_name'],$server_name)){
  echo '<br><br><span class="label label-success">上传成功</span>';
  //header("location:./upimg.php");
}else{
 echo '<br><br><span class="label label-danger">上传失败</span>';
  //header("location:./upimg.php");
}
?>

这里就简单的让用户决定自己上传的文件,博主有时候写博客经常会用到gif图,所以单纯的将文件转储为png,那是不够的。于是我就添加了一个gif图上传的选项。至于其他类型的图片,全部一棍子“打死”,转成png图片类型即可。

适配

由于博主是为了自己图片转储的需要,所以该网页工作的主要是在手机上。那么问题就自然的来了,那就是PC版的网页在手机上显示的话会很丑。

为了让博主自己使用起来也稍微的愉悦一点,做点手机端的适配也是很有必要的啦。

同样的,为了简便。博主使用了Bootstrap来制作前端界面了。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
      <!-- 引入 Bootstrap -->
      <link href="http://cdn.static.runoob.com/libs/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet">
<title>上传图片</title>
<style>
    div {
        width:88%;
        height:auto;
        background:silver;
    }

    input label{
        width:100%;
        height:auto;
    }
</style>
</head>

<body>

<div class="container-fluid">
   <h1><marquee behavior="alternate"  class="label label-info">上传图片吧</marquee> </h1>
    <form role="form" action="./upimg.php" method="post" enctype="multipart/form-data">
        <input class="btn btn-default"  type="file" name="photo"  /><br/><br />
        <div class="form-group">
        <label class="label label-warning">图片类型</label>
        <input type="radio" name="imgtype" value="notgif" checked="checked">非gif图&nbsp;&nbsp;
        <input type="radio" name="imgtype" value="gif" />gif图<br />
        <br/>
        </div>
        <br />
        <input class="btn btn-default" style="background:#C6C" type="submit" value="上传图片"/>
    </form>

</div>

</body>
</html>

其实html代码和php代码是写在一个文件中的,待会博主还会贴出全部的代码。

自动化

刚才博主已经提到了,网页主要是工作在手机端的,那么自然的我们就不能采用单纯的PC端使用的localhost了。那么怎么实现呢?

答案就是使用IP进行连接。形如:

http://192.168.56.245/upimg.php

在进行手机端测试的时候,博主每次都需要到电脑的命令行下手动的输入
ipconfig /all
然后用鼠标往上翻,找到无线适配那一块,如下:

无线局域网适配器 无线网络连接:

   连接特定的 DNS 后缀 . . . . . . . : dlut.edu.cn
   本地链接 IPv6 地址. . . . . . . . : fe80::1d9f:d97b:fd16:1f6f%12
   IPv4 地址 . . . . . . . . . . . . : 192.168.56.245
   子网掩码  . . . . . . . . . . . . : 255.255.252.0
   默认网关. . . . . . . . . . . . . : 192.168.56.1

唉,每次都要这么麻烦,博主也是忒懒,于是就想写个程序来一键获取本机的IP地址,然后就会方便很多了。

说到这里,博主想了不少方法,Java啊,C语言,C++, Python,甚至C#写个界面什么的,但是为了保持博主一贯的优雅,简洁(其实是懒惰)的风格,博主还是采用了最为基础的方式,那就是写一个批命令的脚本,来一键获取本机的IP地址。

代码也比较简单,就是对命令中的返回结果的过滤。

@echo off
for /f "tokens=4" %%a in ('route print^|findstr 0.0.0.0.*0.0.0.0') do (
 set IP=%%a
)
echo %IP%
pause

完整代码

首先是upimg.php

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
      <!-- 引入 Bootstrap -->
      <link href="http://cdn.static.runoob.com/libs/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet">
<title>上传图片</title>
<style>
    div {
        width:88%;
        height:auto;
        background:silver;
    }

    input label{
        width:100%;
        height:auto;
    }
</style>
</head>

<body>

<div class="container-fluid">
   <h1><marquee behavior="alternate"  class="label label-info">上传图片吧</marquee> </h1>
    <form role="form" action="./upimg.php" method="post" enctype="multipart/form-data">
        <input class="btn btn-default"  type="file" name="photo"  /><br/><br />
        <div class="form-group">
        <label class="label label-warning">图片类型</label>
        <input type="radio" name="imgtype" value="notgif" checked="checked">非gif图&nbsp;&nbsp;
        <input type="radio" name="imgtype" value="gif" />gif图<br />
        <br/>
        </div>
        <br />
        <input class="btn btn-default" style="background:#C6C" type="submit" value="上传图片"/>
    </form>

</div>
<?php

header("Content-Type:text/html;charset=utf-8");
$path = "F:/phpimage/";

$imgtype=$_REQUEST['imgtype'];

$rand_number = rand(1,100000);
$server_name = $imgtype=="notgif"?$path."$rand_number".".png":$path."$rand_number.".$imgtype;

if($_FILES['photo']['error']>0){
    die("上传文件出错了!".$_FILES['photo']['error']);
}

if(move_uploaded_file($_FILES['photo']['tmp_name'],$server_name)){
  echo '<br><br><span class="label label-success">上传成功</span>';
  //header("location:./upimg.php");
}else{
 echo '<br><br><span class="label label-danger">上传失败</span>';
  //header("location:./upimg.php");
}
?>
</body>
</html>

然后是一键获取本机IP的代码:

@echo off

echo "当前,您的电脑所在的局域网内的IP地址为:"

for /f "tokens=4" %%a in ('route print^|findstr 0.0.0.0.*0.0.0.0') do (
 set IP=%%a
)
echo %IP%
pause

最后一个pause不能少,除非你想看到一个黑色的框框一闪而逝 :-)

测试

Android端

上传

  • 选择好一张图片,待上传。

上传结果

  • 上传完毕

Iphone

Iphone端的适配就比较简单了,毕竟种类有限嘛。

上传

上传结果

服务器端情况

最后,来查看一下。服务器端有没有上传完成的图片信息。可以看到本次试验上传的所有的图片,而且如果上传的图片为gif图的话,也是可以直接可以满足的,图片的质量并没有被损坏。 :-)

总结

经过了本次试验,博主也明白了一个道理,那就是“工具都是被懒逼着创造出来的”。 不管怎样,也算是复习了一些基础性的知识,外加一点点的应用吧。

基础知识是今后进步的源动力,不该忽视的干粮。

时间: 2024-10-30 07:24:00

唉,都是摄像头惹的祸 :-(的相关文章

排名掉了都是SEO惹的祸

昨天晚上(10月20日凌晨)咱们中文搜索引擎龙头老头--百度,给咱们的站长来了一次继6月14日后第二次大更新,此次大更新在排名和收录数据上都有相当大的"反应". 今天一整天(恐怕最近几天也是)各大站长论坛看见的全是关于昨夜百度更新的话题,当然最多的还是抱怨声,只有小部分站长排名"也许"升了在那里乐呵着. 不论是大更新,还是逢周三.周四的小更新,站长论坛里总会看到很多讨论百度排名掉了的问题,许多掉了排名的站长都会说百度出问题了.百度抽疯了.百度今天怎么了.百度到底想干

博客百度快照停留都是服务器惹的祸

这几天对情侣seo来说真是伤筋动骨,快照停留在7.10了,都是服务器惹的祸啊.细心的朋友可能会发现本站昨天以前的三天都不能访问,很多朋友问我why?当时我只能嫣然面对说:"机房服务器在调整."可是一'调整'就是3天,对咱打击够大的.其实蛋蛋在前天,也就是服务器不能访问的3天的最后一天才知道事情的经过,真是无语. 因为当初不想备案,就买了国外主机.正好那段时间我女友和柳亚还算熟悉,就买了她的全来主机.刚开始确实不错的,后来也有点小问题,不过找她后很快就能解决.其实柳亚还算很不错的一个主机

电视媒体争相上演抄袭门都是收视率惹的祸

文章摘要:为了收视率,有电视台不惜背上"低俗"."恶搞"的骂名.一时间,收视率一次次饱受社会的诟病,仿佛一切都是收视率惹的祸 为了收视率,有的电视台不惜牺牲播出多年的节目:为了收视率,有的电视频道不惜砍掉社会反响良好但收视率不高的节目:为了收视率,有电视台不惜背上"低俗"."恶搞"的骂名.一时间,收视率一次次饱受社会的诟病,仿佛一切都是收视率惹的祸. 湖南卫视"愤慨"了! 在经历了几个月时间的隐忍之后,湖南

《C语言解惑》—— 1.3 都是注释惹的祸

1.3 都是注释惹的祸 注释语句可以增加可读性,但编译系统检查不出不正确的注释,所以会导致错误的结果.[例1.2]演示注释错误的程序. #include <stdio.h> void main() { double x=0; printf("输入x:"); /* 给出提示 scanf("%Lf",&x); /* 输入信息 */ printf("输出x:%f\n",x); } 编译正确,但运行后直接输出"输入x:输出x

谁在扼杀Google的公信力 都是SEO惹的祸

谁在扼杀Google的公信力 都是SEO惹的祸- -                     谁在扼杀Google的公信力 都是SEO惹的祸 Google在你心目中是什么地位?"Google至高无上,Google代表着公平公正!"Google确实是公平公正的,但是正是由于这种公平引发了对众多网友对Google的信任危机.危机的来源,就是变相SEO(搜索引擎优化)所带来的恶果.1月18日,Google终于开始行动,对依靠Blog的评论提高搜索结果排名作弊的手段发起封杀. 据Google的

腾讯屏蔽外挂 都是彩虹惹的祸

中介交易 SEO诊断 淘宝客 云主机 技术大厅 近日,腾讯宣布将启动一系列技术措施来强化用户的隐私安全.具体手段包括QQ软件中引入IP加密,通过QQ客户端屏蔽非法外挂软件的显IP.显隐身功能.腾讯QQ11月26日开始大规模要求用户强制卸载彩虹QQ,经由其QQ安全中心向用户提示"发现非法QQ外挂",并要求用户卸载,如果用户不予以卸载将无法登陆QQ.似乎在一夜之间,腾讯和51成了怒目相向的冤家.口水.官司.声明,所有这一切搅动了原本愁云惨淡.备受裁员折磨的中国互联网,年初曾经闹得沸沸扬扬的

电视媒体争相上演“抄袭门” 都是收视率惹的祸

为了收视率,有的电视台不惜牺牲播出多年的节目:为了收视率,有的电视频道不惜砍掉社会反响良好但收视率不高的节目:为了收视率,有电视台不惜背上"低俗"."恶搞"的骂名.一时间,收视率一次次饱受社会的诟病,仿佛一切都是收视率惹的祸. 湖南卫视"愤慨"了! 在经历了几个月时间的隐忍之后,湖南卫视终于坐不住了. 近日有http://www.aliyun.com/zixun/aggregation/31646.html">媒体报道,湖南卫视准

娱乐圈面瘫怪状都是肉毒杆菌惹的祸?(图)

温兆伦 李多海 蔡琳 人到中年,脸部浮肿让人心酸,肉松变成天理不容,而所谓面僵,更成为娱乐圈一大怪状.近日,温兆伦出现在电视剧<大瘟疫1910>的开机发布会上,大叔似乎风华依旧,未见老态,可惜面部表情僵硬雷人,令人极度唏嘘,难道又是肉毒杆菌惹得祸? 文_陈潇 何谓肉毒杆菌? 1992年有人尝试将肉毒杆菌毒素注射除皱法引进到美容医学的治疗上,就是我们所说的除皱术.肉毒杆菌除皱术也称为生物素除皱,肉毒杆菌A的商品名为"Botox".这种用肉毒杆菌毒素消除皱纹的整容手术应运而生,

开机假死 都是偷懒惹的祸

窜出来,打开任务管理器,"CPU使用"显示100%,单击开始菜单也没反应,基本上要等上几分钟以后才可以正常操作电脑.造成这种问题的主要原因就是开机时系统加载的自启动项太多,造成CPU超负荷运转造成的(快知道:程序总是假死怎么办?). 等电脑可以正常使用后,依次单击"开始"→"运行",在打开的"运行"对话框中输入"msconfig"并单击"确定"按钮打开"系统配置实用程序&quo