instagram api 中文php程序实现涨粉,提示说明,官方的关注功能已弃用,能有其他实现该api涨粉渠道吗

用户“宮園薰”对问题“如何使用API将图片上传到Instagram?”的回答 - 问答 - 云+社区 - 腾讯云我正在构建一个需要将用户上传的图片直接发布到Instagram的PHP应用程序,但是在快速搜索之后,我发现API中没有这样的功能:(它感觉很奇怪......因为它们应该提供一个。我不确定是否有任何其他方式(android和iOS的应用除外)使用php上传图片。如果有任何可能,请给我任何想法。写回答邀请回答如何使用API将图片上传到Instagram?写回答 无法通过API将图片发布到Instagram。
看起来你可以在PC上模拟Instagram。是一款模拟器,可让您在PC / Mac上运行android应用程序。我不确定它的效果如何。第二种选择是使用。这是Instagram的API,但它被颠倒过来并解释了如何使用它(包括上传媒体)。再次,不知道这有多好。回答过的其他问题参考文档:https://www.qcloud.com/document/product/269/9227#3-.E4.BB.8Eimsdk2.x.E5.8D.87.E7.BA.A7.E5.88.B0imsdk3.x[图片描述]...
- (void)viewDidLoad {
[super viewDidLoad];
self.yourIBtextField.delegate =
- (BOOL)textFieldShouldReturn:(UITextField *)t......
if (mNotificationBuilder == null) {
mNotificationBuilder = new NotificationCompat.Builder(this)
.setSmallI......
x2[!is.na(x)] &- cumsum(x2[!is.na(x)])
可以将NA的值更改为0: miss &- is.na(x)
x[miss] &- 0
cs &- cumsum(x)
cs[miss] &- NA
# cs is the ......
原因是你使用的ViewBag名称与模型的属性相同。 例 public
class employee_insignia
public int id{}
public string name{}
public int ins......
使用: import file1
#now use file1.x1, file2.x2, ... to access those variables
将所有变量从file1导入到file2的名称空间(不推荐): from file1 import *
#now use x...... 暂无个人信息本文讲述的是如何为你的PHP项目实现Google的Oauth系统。这个示例PHP脚本非常快,对增加你的PHP项目注册当然是很有帮助的。
在这之前,我们已经覆盖了包含Facebook、Twitter、Google plus以及Instagram的Oauth登录系统示例。很遗憾之前我遗漏掉了Google的Oauth登录系统。今天我们就来看一下如何为你的web项目实现Google的Oauth系统。
在这之前,我们已经覆盖了包含Facebook、Twitter、Google plus以及Instagram的Oauth登录系统示例。很遗憾之前我遗漏掉了Google的Oauth登录系统。今天我们就来看一下如何为你的web项目实现Google的Oauth系统。这个示例脚本非常快,对增加你的web项目注册当然是很有帮助的。
Google Oauth登录系统开发示例
数据库设计
数据库设计很简单,如下所示:
CREATE TABLE users
id INT PRIMARY KEY AUTO_INCREMENT,
email VARCHAR(50) UNIQUE,
fullname VARCHAR(100),
firstname VARCHAR(50),
lastname VARCHAR(50),
google_id VARCHAR(50),
gender VARCHAR(10),
dob VARCHAR(15),
profile_image TEXT,
gpluslink TEXT
1,域名注册
注册或者添加你的域名。
2,所有权认证
验证您的域名所有权,可以通过HTML文件上传或包括META标记。
所有权认证
3,OAuth Keys
谷歌将提供你OAuth用户密钥和OAuth秘密密钥。
Oauth keys
4, Google API控制台
创建客户端ID。
Google API控制台
Google API控制台
然后你就可以看见你的客户端ID和密钥。
配置好的Google Oauth信息
config.php
你可以在src文件夹找到这个文件,在这里您需要配置应用程序OAuth密钥,Consumer keys和重定向回调URL。
// OAuth2 Settings, you can get these keys at https://code.google.com/apis/console Step 6 keys
’oauth2_client_id’ =& ’App Client ID’,
’oauth2_client_secret’ =& ’App Client Secret’,
’oauth2_redirect_uri’ =& ’http://yoursite.com/gplus/index.php’,
// OAuth1 Settings Step 3
’oauth_consumer_key’ =& ’OAuth Consumer Key’,
’oauth_consumer_secret’ =& ’OAuth Consumer Secret’,
google_login.php
Google plus登录系统,你只需要在index.php中加载这个文件。
require_once ’src/apiClient.php’;
require_once ’src/contrib/apiOauth2Service.php’;
session_start();
$client = new apiClient();
setApplicationName(&Google Account Login&);
$oauth2 = new apiOauth2Service($client);
if (isset($_GET[’code’]))
$client-&authenticate();
$_SESSION[’token’] = $client-&getAccessToken();
$redirect = ’http://’ . $_SERVER[’HTTP_HOST’] . $_SERVER[’PHP_SELF’];
header(’Location: ’ . filter_var($redirect, FILTER_SANITIZE_URL));
if (isset($_SESSION[’token’])) {
$client-&setAccessToken($_SESSION[’token’]);
if (isset($_REQUEST[’logout’])) {
unset($_SESSION[’token’]);
unset($_SESSION[’google_data’]); //Google session data unset
$client-&revokeToken();
if ($client-&getAccessToken())
$user = $oauth2-&userinfo-&get();
$_SESSION[’google_data’]=$ // Storing Google User Data in Session
header(&location: home.php&);
$_SESSION[’token’] = $client-&getAccessToken();
$authUrl = $client-&createAuthUrl();
if(isset($personMarkup)):
print $personM
if(isset($authUrl))
echo &&a class=&login& href=&$authUrl&&Google Account Login&/a&&;
echo &&a class=&logout& href=&?logout&&Logout&/a&&;
在这里我们需要向之前创建的user表插入Google plus的session信息。代码如下:
session_start();
include(’db.php’); //Database Connection.
if (!isset($_SESSION[’google_data’])) {
// Redirection to application home page.
header(&location: index.php&);
//echo print_r($userdata);
$userdata=$_SESSION[’google_data’];
$email =$userdata[’email’];
$googleid =$userdata[’id’];
$fullName =$userdata[’name’];
$firstName=$userdata[’given_name’];
$lastName=$userdata[’family_name’];
$gplusURL=$userdata[’link’];
$avatar=$userdata[’picture’];
$gender=$userdata[’gender’];
$dob=$userdata[’birthday’];
//Execture query
$sql=mysql_query(&insert into users(email,fullname,firstname,lastname,google_id,gender,dob,profile_image,gpluslink) values(’$email’,’$fullName’,’$firstName’,’$lastName’,’$googleid’,’$gender’,’$dob’,’$avatar’,’$gplusURL’)&);
数据库配置文件。
$mysql_hostname = &localhost&;
$mysql_user = &username&;
$mysql_password = &password&;
$mysql_database = &databasename&;
$bd = mysql_connect($mysql_hostname, $mysql_user, $mysql_password) or die(&Could not connect database&);
mysql_select_db($mysql_database, $bd) or die(&Could not select database&);
相关 [php google oauth] 推荐:
- 极客521 | 极客521
本文讲述的是如何为你的PHP项目实现Google的Oauth系统. 这个示例PHP脚本非常快,对增加你的PHP项目注册当然是很有帮助的. 在这之前,我们已经覆盖了包含Facebook、Twitter、Google plus以及Instagram的Oauth登录系统示例. 很遗憾之前我遗漏掉了Google的Oauth登录系统.
- 小汐 - Planet DebianTW
Google 提供的 PHP 效能調校(Optimize performance)的幾點原則, 詳細可見此文:. 原文: Let's make the web faster - PHP performance tips. 作者: Eric Higgins, Google Webmaster. 此文內容很短, 講得都是大方向, 主題內容如下:.
- lyxint - 火丁笔记
去年我写过一篇《OAuth那些事儿》,对OAuth做了一些简单扼要的介绍,今天我打算写一些细节,以阐明OAuth如何从1.0改变成1.0a,继而改变成2.0的. 在OAuth诞生前,Web安全方面的标准协议只有OpenID,不过它关注的是验证,即WHO的问题,而不是授权,即WHAT的问题. 好在FlickrAuth和GoogleAuthSub等私有协议在授权方面做了不少有益的尝试,从而为OAuth的诞生奠定了基础.
- 阮一峰的网络日志
OAuth是一个关于授权(authorization)的开放网络标准,在全世界得到广泛应用,目前的版本是2.0版. 本文对OAuth 2.0的设计思路和运行流程,做一个简明通俗的解释,主要参考材料为
RFC 6749. 为了理解OAuth的适用场合,让我举一个假设的例子. 有一个"云冲印"的网站,可以将用户储存在Google的照片,冲印出来.
- 非狐外传 - python.cn(jobs, news)
OAUTH协议为用户资源的授权提供了一个安全的、开放而又简易的标准. 简易来说,就是我们可以在某一个第三方服务器,如:新浪,豆瓣,在用户授权,并且不透漏密码等信息给我们的条件下,访问和修改用户的资源. oauth的项目主页为:http://oauth.net/ ,现在国内很多网站的开放平台都采用了Oauth方式来进行授权.
- 宋大妈 - FeedzShare
来自: 标点符 - FeedzShare
. 发布时间:日,
已有 2 人推荐. OAuth(开放授权)是一个开放标准,允许用户让第三方应用访问该用户在某一网站上存储的私密的资源(如照片,视频,联系人列表),而无需将用户名和密码提供给第三方应用. OAuth允许用户提供一个令牌,而不是用户名和密码来访问他们存放在特定服务提供者的数据.
- 企业架构 - ITeye博客
原文链接:http://www-01.ibm.com/support/knowledgecenter/SSELE6_8.0.0.3/com.ibm.ammob.doc_8.0.0.3/config/concept/con_oauth20_workflow.html%23con_oauth20_workflow?lang=zh.
- lostsnow - 火丁笔记
最近,国内主要门户网站相继开放了微博平台,对开发者而言这无疑是个利好消息,不过在实际使用中却发现平台质量良莠不齐,有很多不完善的地方,就拿PHP版SDK来说吧,多半都是用TwitterOAuth改的,一旦多平台集成,很容易出现命名冲突之类的问题. 既然官方SDK不给力,那我们只能发扬自力更生的革命精神了.
- 博客 - 伯乐在线
英文原文:
JavaScript oAuth 编译:
oschina. 现在,很多的应用程序都在使用HTML和JavaScript, 这是一个非常明智的选择,让你跟上目前的趋势. 一些主要实体工具因为客户端验证和授权等原因提供了API. 当前网站对于验证的一个广受欢迎的功能是”单点登录”. 这让用户可以通过其它一些社交媒体网站上的身份认证直接登录你的网站.
--> 坚持分享优质有趣的原创文章,并保留作者信息和版权声明,任何问题请联系:itarea.。Instagram被收购两年:有没有做好商业化的准备?-阿里云资讯网
Instagram被收购两年:有没有做好商业化的准备?
发布时间:
更新时间:
来源:网络
上传者:用户
国外近日撰文讲述了被Facebook后的演变背后。该照片分享服务拥有快速增长的、高活跃度的用户基础,让们垂涎不已。现在,它需要做的搞清楚该如何展开商业化,为其母公司谋利。
以下是主要内容:
现年29岁的Karston “Skinny” Tannis对于Instagram充满热情。他是一家出版公司的会计经理,他几乎每个周末都会去参加Instagram迷交流会,每天都上传照片到该服务。他在上面有3.5万关注者,这是个不小的数目,但还不足以让他进行商业化。
不过他使用Instagram很大程度上是因为其对该服务的热情。他将Instagram称作连接他与其他人士的“视觉日记”。他早上起来的第一件事情就是打开手机,充满期待地查看他睡觉期间该应用上发生了些什么。
这正是Facebook出现初期所激发的那种热爱,也是两年前CEO兼马克?(Mark Zuckerberg)斥资近10亿美元买下该照片分享应用的。人们当时认为他太疯狂了。那个时候Instagram只有13名,活跃用户量不到2200万,还没有推出网站服务。
如今,它号称拥有超过2亿的活跃用户――几乎跟不相上下――日照片上传量达到6000万张。据尼尔森称,用户每月花在Instagram上的平均时长达到3.7小时,超过了Twitter和。该收购也给Facebook带来,帮助它连接了更多的年轻用户。
加拿大皇家常务董事马克?马哈尼(Mark Mahaney)指出,“它可能会是消费领域史上最好的交易之一。”
这不无道理,一定程度上是因为Instagram催生了一种势不可挡的新社交现象:一如100年前柯达发明的胶卷让拍照变得便利起来,Instagram发明的配以易用编辑工具的社交信息流让每一个人都能够快速生成和分享经过润色的细致照片。其照片分享给人们带来了各种意想不到的影响。
例如,13岁的滑板运动员凭借一张滑板练习照片吸引了多达4.2万的关注者。就像之于,Instagram让Facebook处在了一种日益重要的通讯媒介的中心位置。
企业纷纷涌向该平台。从服装公司Free People到通用电气的公司均以推出了各自的Instagram信息流,据它们反映,该服务产生的用户参与量(如“赞”和评论)要远远超过其它。Patagonia邀请登山者在登山期间用Instagram自拍,给照片打上#VIDAPatagonia标签然后到Patagonia.com网站。彪马等也以最高一天5000美元的薪酬招募拥有大量活跃受众的Instagram用户给它的产品拍照。
目前,似乎就只有一方没有试图在Instagram上赚钱,它就是Instagram的母公司。Facebook也不需要那么做。它去年的同比上涨了55%至79亿美元――没有一分钱来自Instagram。在Facebook 4月的财报电话会议上,扎克伯格称,Instagram还有很大的增长空间,未来它将开始成为一项重要的业务。不过,正如他所说的,“商业化短期内还不是我们的优先事项。”3月,Instagram签订了它与广告代理商的首项合作协议,Omnicom将在该服务上投放约4000万美元的广告。
当然,谁也无法保证Instagram的稳健上行势头会持续下去。Instagram的两位凯文?希斯特罗姆(Kevin Systrom)和迈克?克里格(Mike Krieger)对此非常清楚。一方面,它面临着大量的技术挑战,从为更多的用户维护基础服务设施到外国语言支持。
另外,随着人们日益需要私密而非公开分享,、(现在也归入Facebook门下)等一连串的通讯服务相继兴起。Instagram必须要在维持原有特色的同时努力去迎合人们不断变化的口味需求。
希斯特罗姆认为Instagram能够克服这一挑战。他最近招揽了第45名员工,Instagram办公室也刚刚进行了扩张,已占用位于飞加州门洛帕克园区的一大楼楼层的大部分空间。希斯特罗姆承认,扩张Instagram服务并实现其经济潜力绝非易事。在采访中,他也有一个疑问:有多少公司能够打造出一款用户量超过10亿的社交服务呢?他答道,“有一家,就是我们效力的那家。”
当初,不少人质疑Instagram为什么要在飞速增长的时候早早卖掉。但Instagram团队坚称,母公司的高层不会插手Instagram的运营。克里格对Facebook的基础设施部门负责人杰?帕里克(Jay Parikh)表示赞赏,“在我们来到这里之前,他跟每一个人说,‘不要打扰,但要是他们请求你们提供帮助,就尽你们所能去帮助他们。’”
克里格和希斯特罗姆称,事实上Facebook给Instagram带来了大量的价值。例如,Instagram相当依赖Facebook的垃圾邮件和诈骗预防团队来整顿平台上的内容。克里格也常常拜访Facebook的一位高管顾问提供管理,以解决团队人员增长10倍引起的种种挑战。
首次真正考验
Instagram在自主运营期间面临的首次真正考验发生于收购完成3个月后。Facebook建议Instagram修改服务条款,允许Instagram无需征求用户同意或作出通知即可使用他们的照片,将其用于广告目的。Instagram于是作出了该政策变化。服务条款的变动公布于一个周一的晚上,到了第二天希斯特罗姆和克里格猛然发现该举引发了用户强烈的不满,眼看账号注销数量不断飙涨。
“那是一个可怕的时刻。我当时在想,我们刚刚扼杀了Instagram吗?”希斯特罗姆说道。克里格立即召集Instagram高管开会,希斯特罗姆则会见扎克伯格、Facebook谢丽尔?桑德伯格(Sheryl Sandberg)以及法律团队。“我们恢复为原来的条款吧。”希斯特罗姆敦促道。希斯特罗姆称,他们试图劝服他坚持该政策变化。但他回应道,既然短期内还没有给平台引入广告的打算,现在就疏远用户是不值得的。他们大可以日后再重新考虑作出该变化。
“大家花了一些时间才接受现状,但我坚信恢复原来的条款会管用。”希斯特罗姆说。后来他发表博文宣布将Instagram服务条款恢复为原样,用户的删号行为随即停止。用户们发出了自己的声音,Instagram聆听了,Facebook也像它当初承诺的那样不干涉Instagram的事务。
与部分不同,Instagram并没有去探究其自身吸引力的本质。Snapchat聘请了社交媒体理论家纳森?杰根森(Nathan Jurgenson)去研究人们为什么会喜欢照片“阅后即焚”。Facebook则与研究人员合作探究用户状态更新背后的情绪和心理状态。
而Instagram则采取派发贴纸的做法来营造社区氛围。该公司拥有一个鼓励形成社区的9人团队。它负责维护Instagram的企业,那对于像Skinny这样的狂热用户来说很值得高兴,因为它可以带来Instagram的最新。当全球各地举办InstaMeet聚会的时候,Instagram会向所有的组织者发放一些装备,如均打上Instagram商标的红气球和贴纸。
那Instagram究竟为什么能够如此迅猛地流行开来呢?一项针对学者、摄影者和的显示,它的兴起与通讯视觉化的大有关。人们想要透过分享照片来描述自己的生活经历。这一点在Facebook取代昔日的霸主之时可见一斑,前者的技术更加便于用户上传和分享照片。而在2007年的横空出世更是大大降低了照片拍摄与分享的难度,并带来了更多的乐趣。希斯特罗姆和克里格的服务则在这一演变的基础上更进一步。
通过加入滤镜等简单的编辑工具,Instagram让普通的都似乎变成了优秀的摄影者。如今,普通人都能够通过修改处理他们的照片来表达自己的想法和感觉。
如今,很多的专业摄影师发现Instagram是推广和补充其作品的一个很好的平台。其中一个例子是为美联社游遍世界的资深摄影记者大卫?古藤菲尔德(David Guttenfelder)。2013年,他进入朝鲜展开为期一年的当地居民生活记录,那个时候他开始在Instagram上发表他的一部分摄影作品。其Instagram信息流如今拥有34.9万关注者,俨然成了世间奇事奇物的照片库。《时代》杂志将他评为2013年度最佳Instagram摄影师。
希斯特罗姆和克里格认为这些用户的故事很酷,不过他们的关注重点在于为Instagram带来出色且十分快速的体验。希斯特罗姆在谈到诸如延迟(上传照片与照片出现之间的延时)等问题时显得很兴奋。在过去的3个月里,两人将该延时缩短了三分之二。通讯平台需要做到维持运行的稳定性和易用性,这些正是Instagram实现腾飞而PicPlz、Hipstamatic等更早期的同类服务陨落的重要原因。
虽然广告主需求很大,但Instagram在广告产品推进上一直都相当缓慢。希斯特罗姆表示,公司不希望在这方面走得太快,不希望因此而将事情搞砸。该公司直到去年11月才开始测试10个广告活动,推出了首批赞助广告。
在Facebook最近的一次财报会议上,桑德伯格谈到了Levi’s广告活动的成功。据称,那些广告针对美国的18岁至34岁人群,触及了大约740万人。桑德伯格称,它“在广告记忆率上带来了24%的提升,为对照组的3倍之多。”
在社交媒体上,早期的营销活动往往能够取得很大的成功,因为它们能够给用户带来惊喜,能够吸引眼球。不过,希斯特罗姆极其强调做好广告的质量,避免疏远用户。在选定最初的10个广告主时,Instagram谨慎地选择了那些广告做得很自然且富有吸引力的品牌商。希斯特罗姆本人亲自审阅当中的每一个广告,还会毫不客气地提出批评。最近在Instagram上投放广告,事实上,希斯特罗姆一开始曾将Airbnb计划投放的广告退回去,要求他们在标注上更好地利用位置特性,说明拍照地点。
时下也涌现了不少帮助广告主触及Instagram受众的公司。Mobile Media Lab等公司致力于为大品牌商与Instagram热门账号(很多属于关注者数量超过10万的业余摄影师)牵线搭桥。像Pixlee这样的公司则提供数据分析服务,帮助Ugg等品牌商识别出用户生成的有关其服装产品的照片,以及判断哪些照片最能给其品牌产生正面影响。
适应用户口味变化
社交媒体服务就像是夜总会。它们很酷,一下子就能吸引不少追求潮流的人,与此同时,它们也可以消失得无影无踪。存活下来的那些服务从娱乐工具变成了实用工具。这样,即使用户不再爱慕它们,他们也仍需要它们。
希斯特罗姆和克里格非常重视用户的口味变化。尽管Instagram的用户基础持续扩大,两人仍高度专注,加紧开发来扩大服务的吸引力。“我想我们正处于私密化阶段。”希斯特罗姆说。这种转变可以从Snapchat、WhatsApp等应用的兴起看出来,它们可让用户与少数受众分享照片。“这不是技术变化,而是社会变化,我们在进行适应。”他说道。
Instagram推出了一项账号可见性设置功能。去年12月,Instagram也上线了一项名为Direct的私信功能。当时不少科技媒体对其并不看好,但数据显示它势头正劲。据Instagram称,在过去一个月里,4500万用户(约占25%)在Instagram上使用过私信功能。
该公司的短视频分享服务则没那么成功。该服务是在Twitter旗下的Vine受到广泛青睐不久后推出的。希斯特罗姆称Instagram满意该功能的表现,但它不愿披露具体的使用数据,两名消息人士称视频功能的实际表现令人失望。
虽然心存担忧,但希斯特罗姆相信,如果能够保持当前的执行力水准,Instagram未来将会迎来巨大的增长。与此同时,该产品还会吸引更多像Skinny这样三年来每天都使用的狂热用户。说到Instagram的魅力,他说,“该服务让人有点窥探别人心理的感觉。”对此广告主会愿意付多少钱呢?
译者:乐邦
百度新闻与网易科技合作稿件,转载请注明出处。
本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件至:zixun-group@service.aliyun.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。
 今天为何要写这个题目,原因是很多新手站长或者想成为站长的朋友,通常最关心的问题就是:“你赚了多少钱””你赚钱没?”“你是怎么赚钱的”等等,无外乎赚钱二字。为何众多新手站长和关心“赚钱”二字,原因分析如下:   首先很多新手站长是第一次进入这个陌生而神秘的行业,甚至进来之前,域名,空间,数据库等知识在大脑都是苍白一片。当他们在外面的时候 平面媒体的一个个成功事例,不断激励着我们,一股跃跃欲试...
我是QQ糖-1,做网站3年有余,做seo不到6个月,自我感觉自学能力还可以。在不算遥远的岁月里,拼搏在互联网大海里,沉浮不定,辛酸愈加。把自己的心里话说给大家,亲爱的同志们,革命尚未成功,我们仍需努力。本人最早满怀信心地代理过一家网站分站,但2年来的运营是我感受到了受制于人的那种无奈和煎熬。另辟新境开张地方门户网,自己给自己掀起了革命的新高潮。这期间有苦也有甜,也基本奠定了我人生事业的基础,...
本人是非主流个性域名爱好者,虽然不是国内最早进入这个领域的,也不敢自称专家,不过我已经研究个性创意域名将近一年,这里就我所知道的一些知识提供给大家分享。 个性创意域名,英文 Domain Hack ,或者 Domain Hacks ,具体可以参考Wikipedia上的词条,最早起源于1992年注册的 inter.net (Internet),随着 pla.net (Planet) 等域名的注...
不同的人对如何建立好网站有不同的看法,那么该如何经营好自己的网站呢?这个问题我曾经在论坛组织里也讨论过,大家都各抒己见,我个人觉得,内容是做好一个网站的基础。我曾经在一个乡村医生论坛上当斑竹主要的工作是宣传,但我却觉得势单力薄,一个人宣传很累,就动员其他斑竹去宣传,然后他们并没有按我的意思去做,流量却依然不错,我很好奇他们的流量如何来的?   经过我的多方调查之后,我发现了那些斑竹都是一些临...
 站长是不是应该做到全能?观点一:只要精通一门就是了,学多了就会杂。观点二:艺多不压身。观点三:精通一门技术之后,有精力了再去学别的。相信很多站长都会选择后者。因为这是个折中的办法。但是你有没有想过:你真有的那么多精力吗?送各位站长一句话:选择比努力更重要。   拿我自己来说吧,网站这个行业我干过前台设计,DIV+CSS切图,DEDE后台实施,PHP程序员,项目经理,再到现在的SEOer。说...
 昨天通过一个朋友再次认识到一个朋友,他是做电子商务的。他叫“李响”,很是有激情的一个人。确实让我佩服的五体投地!和他聊天中我学到了不少东西,不管是管理、口才、人脉等,都是我无可去超越的。但我也不会认输,正所谓一个人选择的道路,死也要走完。给自己一个最好的结局。一年多以来没有的压力再次来临了。   08年做互联网的时候,还是一个什么都不懂的人。也学到了一些营销的手法,但我觉得这些营销手法好是...
若您要投稿、删除文章请联系邮箱:zixun-group@service.aliyun.com,工作人员会在5个工作日内回复。
售前咨询热线
支持与服务
资源和社区
关注阿里云
International下次自动登录
现在的位置:
& 综合 & 正文
用PHP实现Instagram滤镜效果
译者注:这篇文章涉及图像处理,非常有趣,同时可以用来构建云加端的移动拍照App。
程序 :PHP/ImageMagick
难度:中级
预计完成时间:45分钟
你将创建的最终作品
在本教程中,我将演示如何用PHP和创建像一样效果的老照片。是的,你可以用PHP和ImageMagick来完成这件事,而且这只是最简单的事情!
我们创建数码老照片,然后让它变得很酷
曾几何时 - 22年以前(在PHP出现5年前)ImageMagick诞生了。从那时起,它已经发展成为一个独立的软件平台来创建、编辑、生成或者转换光栅图像(支持超过100种格式!)。 你可以用它来调整图像大小,制作图像镜像,翻转、旋转、扭曲、剪切和转换图像,调整图像颜色,应用各种特殊效果,或者绘制文本、线条、多边形、椭圆和贝塞尔曲线。 它完全拥有你在Web开发中处理图像、处理视频、生成全景图所需要的一切。但是请注意,它不是一个GUI的图像编辑器。
ImageMagick就是Web上的Photoshop命令行。
PHP图像处理
PHP捆绑 (GIF绘制/图形绘制),这是一个动态创建图像库。 它可以用于简单的图像操作,如缩放、裁剪、添加水印、
(杰弗里写的),应用基本的照片滤镜-你可能已经用过它。不幸的是,如果你要创建像Instagram滤镜一样更复杂的效果,GD无法实现。不过,幸运的是,我们有ImageMagick!
GD vs. ImageMagick
它们不能在高层次上来进行对比,因此我们将使用一个简单的例子,例如调整尺寸。想象一下,我们已经上传了一个新的像素的photo.jpg图像,我们要动态的把它的大小调整为640×480像素。
在下面的例子中,我们必须调用6个函数,如果我们有可变宽高比时还可能要执行一些计算。
$im= imagecreatefromjpeg('photo.jpg');
$ox= imagesx($im);
$oy= imagesy($im);
$nm= imagecreatetruecolor($nx, $ny);
imagecopyresized($nm,$im,0,0,0,0,$nx,$ny,$ox,$oy);
imagejpeg($nm, 'photo.jpg');
ImageMagick
IM(ImageMagick的简称)有一个漂亮的包装,称为Imagick - 原生的PHP扩展,使用ImageMagick的API来创建和修改图像。唯一的缺点是:你将有可能用PECL来安装,它的共享主机有时会有一些连接问题。
$image= newImagick('photo.jpg');
$image-&resizeImage(640, 480,imagick::FILTER_LANCZOS, 0.9);
更简单的方法是使用PHP的命令行(也是我们将要用到的)。
exec('mogrify -resize 640x480 photo.jpg');
就是它了!相当完美。
安装ImageMagick
虽然基本上每一个不错的服务器托管商都提供了ImageMagick安装,但是你可能在本地服务器上并没有安装,因为它并没有被PHP所捆绑。
不过安装ImageMagick是一件很容易的事情。访问ImageMagick,选择你服务器的操作系统(Unix/Mac/Win),并且选择所推荐的包。只要遵循简单的说明,你就不会犯错。
一旦完成安装,转到终端命令提示符下,输入“convert”并且回车,如果你得到一系列选择项而不是“Command not found”,证明你已经安装成功。请注意你并不需要在PHP里进行任何配置。
Instagram是如何工作的?
说实话,我也不知道Instagram团队使用什么技术来进行图像处理。ImageMagick在iOS下也同样可用,也许这就是Instagram的魔力源泉?引用Instagram CEO和联合创始人Kevin Systrom的话如下。
“它确实是许多不同方法的组合。在某些情况下,我们在图像上绘画;另外一些情况下我们进行像素运算。这真的取决于我们想要的效果。”
例如,Lomo-fi在有高对比度的图像上不太有效,而Toaster是最复杂(同时很慢,也很受欢迎)的滤镜之一。
我不再描述更多的信息,但它会是我们的秘密武器:)也许有一天…
“也许有一天…”对我们来说并不足够,Systrom先生。我们接受挑战。
Show Me The Code!
我们将要模仿实现gotham、toaster、nashville、lomo和kelvin滤镜效果。
Instagraph – PHP类
我曾经创建了一个小的PHP包装类来使图像处理的过程尽量的简单。如你所知,在这些滤镜里,我们有许多的:
Colortone:将会给一副图片用高亮或者阴影着色。例如, 我们希望将黑色变为紫色。
Vignette:图像的边缘淡出或逐步去色。我们甚至可以进行翻转或者为晕影着色。
Border:为图片添加边框。例如, 我们希望有一个黑色或白色,或者任意一个一定宽度的彩色边框。注意边框的宽度将会增加图片的尺寸。
Frame:将读取指定的相框并拉伸来适合图片。Nashville和kelvin滤镜需要用到。
Tempfile:创建临时文件(原始图片的副本)。
Output:简单重命名工作副本。
Execute:我们将通过这个方法发送所有命令,来防止使用shell脚本时发生错误。
我提到这些以便于我们能跳到有趣的部分。创建一个名为 instagraph.php的新文件,但后复制和粘贴下面的代码。
* Instagram filters with PHP and ImageMagick
* @package
Instagraph
Webarto &dejan.&
* @copyright
* @license
http://creativecommons.org/licenses/by-nc/3.0/ CC BY-NC
class Instagraph
public $_image = NULL;
public $_output = NULL;
public $_prefix = 'IMG';
private $_width = NULL;
private $_height = NULL;
private $_tmp = NULL;
public static function factory($image, $output)
return new Instagraph($image, $output);
public function __construct($image, $output)
if(file_exists($image))
$this-&_image = $
list($this-&_width, $this-&_height) = getimagesize($image);
$this-&_output = $
throw new Exception('File not found. Aborting.');
public function tempfile()
# copy original file and assign temporary name
$this-&_tmp = $this-&_prefix.rand();
copy($this-&_image, $this-&_tmp);
public function output()
# rename working temporary file to output filename
rename($this-&_tmp, $this-&_output);
public function execute($command)
# remove newlines and convert single quotes to double to prevent errors
$command = str_replace(array("\n", "'"), array('', '"'), $command);
$command = escapeshellcmd($command);
# execute convert program
exec($command);
/** ACTIONS */
public function colortone($input, $color, $level, $type = 0)
$args[0] = $
$args[1] = 100 - $
$negate = $type == 0? '-negate': '';
$this-&execute("convert
( -clone 0 -fill '$color' -colorize 100% )
( -clone 0 -colorspace gray $negate )
-compose blend -define compose:args=$args[0],$args[1] -composite
{$input}");
public function border($input, $color = 'black', $width = 20)
$this-&execute("convert $input -bordercolor $color -border {$width}x{$width} $input");
public function frame($input, $frame)
$this-&execute("convert $input ( '$frame' -resize {$this-&_width}x{$this-&_height}! -unsharp 1.5×1.0+1.5+0.02 ) -flatten $input");
public function vignette($input, $color_1 = 'none', $color_2 = 'black', $crop_factor = 1.5)
$crop_x = floor($this-&_width * $crop_factor);
$crop_y = floor($this-&_height * $crop_factor);
$this-&execute("convert
( {$input} )
( -size {$crop_x}x{$crop_y}
radial-gradient:$color_1-$color_2
-gravity center -crop {$this-&_width}x{$this-&_height}+0+0 +repage )
-compose multiply -flatten
{$input}");
/** RESERVED FOR FILTER METHODS */
Instagram滤镜
我们将会一个接一个创建滤镜效果。我将会解释必要的PHP函数和ImageMagick命令,包括示例。确保你更新了PHP类来支持下面的新方法。下载的包里提供了图像的相框,它们都是PNG的透明图片。下面让我们开始。
这是我的狗在沙滩上享受生活的照片。它是我相机的作品。
滤镜生成一张黑白、有浅蓝底色的高对比度的图像。在现实生活中,这会用Holga相机和Ilford X2胶片来实现。
public function gotham()
$this-&tempfile();
$this-&execute("convert $this-&_tmp -modulate 120,10,100 -fill '#222b6d' -colorize 20 -gamma 0.5 -contrast -contrast $this-&_tmp");
$this-&border($this-&_tmp);
$this-&output();
文字解释:创建一个工作文件,将图像加载到内存,提高一点亮度和饱和度,改变剩下的颜色为深紫色,伽马校正,增加更多对比度,把所有改变保存到一个文件中。添加一个20像素的黑色边框。是不是很简单?
Toaster滤镜类似于老宝丽来相机的效果,它有以粉红色或橙色为发光中心的鲜艳颜色。按Instagram CEO的话来说,它是最难实现的效果之一。
public function toaster()
$this-&tempfile();
$this-&colortone($this-&_tmp, '#330000', 100, 0);
$this-&execute("convert $this-&_tmp -modulate 150,80,100 -gamma 1.2 -contrast -contrast $this-&_tmp");
$this-&vignette($this-&_tmp, 'none', 'LavenderBlush3');
$this-&vignette($this-&_tmp, '#ff9966', 'none');
$this-&output();
提示:你甚至可以添加为完整的效果添加一个白色边框,只需要在$this-&output();前添加代码$this-&border($this-&_tmp,'white');.
文字解释:创建一个工作文件,将图像加载到内存,将黑色变为暗红色,提高亮度,将饱和度设为1/5,执行伽玛校正(使图像更亮),添加更多对比度并保存。最后,添加一个灰色的晕影(边缘去掉一点饱和度)以及一个实现色彩燃烧效果的橙色翻转晕影。
Nashville有很棒的80年代时尚掉色照片似的感觉。它通过洋红和桃红色调产生图片。此外,它还添加一个相框来获得幻灯片的外观。这是最容易实现并且最流行的Instagram滤镜之一。
public function nashville()
$this-&tempfile();
$this-&colortone($this-&_tmp, '#222b6d', 100, 0);
$this-&colortone($this-&_tmp, '#f7daae', 100, 1);
$this-&execute("convert $this-&_tmp -contrast -modulate 100,150,100 -auto-gamma $this-&_tmp");
$this-&frame($this-&_tmp, __FUNCTION__);
$this-&output();
文字解释:创建一个工作文件,将图像加载到内存,将黑色变成靛蓝色,将白色变成桃红色,增强对比度,将饱和度提高一半,进行伽马自动校正。从PNG文件添加相框。
Lomography就是通过相框和柔焦来创建高对比度的照片。在现实生活中,这种效果大多通过Holga,LOMO LC-A或者所谓的玩具相机(有塑料镜片的照相机)来实现。这种效果相当容易重现,我们将红色和绿色通道的对比度简单的提高1/3,并且添加一个相框。你可以随意进行实验。
public function lomo()
$this-&tempfile();
$command = "convert {$this-&_tmp} -channel R -level 33% -channel G -level 33% $this-&_tmp";
$this-&execute($command);
$this-&vignette($this-&_tmp);
$this-&output();
提示:如果你喜欢没有晕影的Lomo效果,只需要注释掉或者移除对应代码。文字解释:创建一个工作文件,将图像加载到内存,将红色通道的对比度提高1/3,再次将红色通道对比度提高1/3,应用一个晕影。
这种效果以达尔文命名,它使用了一个强力的桃色和橙色覆盖层,并且添加了一个掉色的相框。
public function kelvin()
$this-&tempfile();
$this-&execute("convert
( $this-&_tmp -auto-gamma -modulate 120,50,100 )
( -size {$this-&_width}x{$this-&_height} -fill 'rgba(255,153,0,0.5)' -draw 'rectangle 0,0 {$this-&_width},{$this-&_height}' )
-compose multiply
$this-&_tmp");
$this-&frame($this-&_tmp, __FUNCTION__);
$this-&output();
文字解释:创建一个工作文件,将图像加载到内存,规范化,提高1/5的亮度,提高饱和度的一半,创建一个桃色和橙色的覆盖层,并且应用多重混合模式。最后,使用PNG文件添加一个相框。
你可以很容易地使用这些效果!我假定你会在instagraph.php文件内保存所有代码。现在,创建一个文件,名为filter.ph并复制下面你需要的代码。
如果你只想在图像上应用一种滤镜,你可以这样做:
require 'instagraph.php';
$instagraph = Instagraph::factory('input.jpg', 'output.jpg');
catch (Exception $e)
echo $e-&getMessage();
$instagraph-&toaster(); // name of the filter
就是它了。现在,如果你想为一副图像使用所有的滤镜,使用如下代码。
require 'instagraph.php';
$instagraph = Instagraph::factory('input.jpg', 'output.jpg');
catch (Exception $e)
echo $e-&getMessage();
// loop through all filters
foreach(array('gotham', 'toaster', 'nashville', 'lomo', 'kelvin') as $method)
$instagraph-&_output = $method.'.jpg'; // we have to change output file to prevent overwrite
$instagraph-&$method(); // apply current filter (from array)
现在只需要在浏览器里打开这个页面,你就可以得到想要的结果。
性能肯定是每个应用的重要组成部分。因为为一副图像应用滤镜的平均时间大约是1秒,我们可以肯定地说相当快!
ImageMagick资源
要了解更多关于ImageMagick的信息,下面有我们在滤镜方法里所有曾用到的命令和选项的链接列表:
: 调整亮度,饱和度和色相
: 提高或降低图像的对比度
: 调整图像高度或宽度
: 当填充原始图形时着色
: 使用原始图形来标注图像
: 设置图像合成操作
: 应用选项来选择图像通道
: 调整图像对比度水平
: 自动调整图像伽马水平
: 伽马校正的水平
此外,这儿还有一些ImageMagick的脚本、教程和示例。
在本教程中,我们学到了ImageMagick,通过创建类似Instagram的滤镜表现出了它的力量。我们实现了!
如果你需要任何帮助,或需要援助来创造其他的滤镜,例如Tilt Shift或Earlybird,在评论里告诉我,我会尽我所能来协助你。
【上篇】【下篇】

我要回帖

更多关于 php api接口开发 的文章

 

随机推荐