Javascript 如何从Instagram API获取裁剪后的图像?
目前我得到这张图片:Javascript 如何从Instagram API获取裁剪后的图像?,javascript,jquery,html,image,instagram,Javascript,Jquery,Html,Image,Instagram,目前我得到这张图片: https://scontent.cdninstagram.com/hphotos-xtp1/t51.2885-15/s320x320/e35/11950569_428157634035762_1539002513_n.jpg 但我想得到这个版本的图像: https://igcdn-photos-b-a.akamaihd.net/hphotos-ak-xfp1/t51.2885-15/e35/c238.0.603.603/11856567_458440314342209
https://scontent.cdninstagram.com/hphotos-xtp1/t51.2885-15/s320x320/e35/11950569_428157634035762_1539002513_n.jpg
但我想得到这个版本的图像:
https://igcdn-photos-b-a.akamaihd.net/hphotos-ak-xfp1/t51.2885-15/e35/c238.0.603.603/11856567_458440314342209_1536381871_n.jpg
以下是我构建API URL的方式:
var apiEndpoint = "https://api.instagram.com/v1";
function composeRequestURL() {
var url = apiEndpoint,
params = {};
if (settings.next_url != null) {
return settings.next_url;
}
if (settings.hash != null) {
url += "/tags/" + settings.hash + "/media/recent";
}
else if (settings.search != null) {
url += "/media/search";
params.lat = settings.search.lat;
params.lng = settings.search.lng;
settings.search.max_timestamp != null && (params.max_timestamp = settings.search.max_timestamp);
settings.search.min_timestamp != null && (params.min_timestamp = settings.search.min_timestamp);
settings.search.distance != null && (params.distance = settings.search.distance);
}
else if (settings.userId != null) {
url += "/users/" + settings.userId + "/media/recent";
}
else if (settings.locationId != null) {
url += "/locations/" + settings.locationId + "/media/recent";
}
else {
url += "/media/popular";
}
settings.accessToken != null && (params.access_token = settings.accessToken);
settings.clientId != null && (params.client_id = settings.clientId);
settings.minId != null && (params.min_id = settings.minId);
settings.maxId != null && (params.max_id = settings.maxId);
settings.show != null && (params.count = settings.show);
url += "?" + $.param(params)
return url;
}
有没有什么建议可以得到那张裁剪过的照片?非常感谢。是的,有人建议你剪下那张照片 你们只需要知道图像的原始宽度和高度 您可以在url中将
/cX.Y.W.H/
添加到裁剪图像中
例如:图像的原始大小为1080x603。所以,要在正方形中裁剪图像,我们需要得到正方形1080x1080(带空格)并将其裁剪为603x603
答案是:W=603,H=603,X=(1080-603)/2=238,Y=(1080-603)/2=238
然后将/c238.238.603.603/
添加到url:
https://scontent.cdninstagram.com/hphotos-xtp1/t51.2885-15/s320x320/e35/c238.238.603.603/11950569_428157634035762_1539002513_n.jpg
该图像是320x320,因此要获得我们的平方,只需删除一些变量,然后获取url:
https://scontent.cdninstagram.com/hphotos-xtp1/c238.238.603.603/11950569_428157634035762_1539002513_n.jpg
UPD
如果您不知道图像的真实原始大小
,API将返回非方形图像的大小(要激活它:管理客户端->编辑->迁移选项卡->检查非方形介质
)
例如:
链接:
https://api.instagram.com/v1/tags/nonsquare/media/recent?client_id=CLIENT-ID
答复如下:
...
images: {
low_resolution: {
url: "https://scontent.cdninstagram.com/hphotos-xpt1/t51.2885-15/e35/p320x320/10949090_860171600771180_267418389_n.jpg",
width: 320,
height: 400
},
thumbnail: {
url: "https://scontent.cdninstagram.com/hphotos-xpt1/t51.2885-15/s150x150/e35/c0.135.1080.1080/10949090_860171600771180_267418389_n.jpg",
width: 150,
height: 150
},
standard_resolution: {
url: "https://scontent.cdninstagram.com/hphotos-xpt1/t51.2885-15/sh0.08/e35/p640x640/10949090_860171600771180_267418389_n.jpg",
width: 640,
height: 800
}
}
...
在url中,我们添加了/pWxH/
以小尺寸获取图像(对于/p640x640/
和真实原始尺寸1080x1350 Instagram,返回图像640x800)。您可以使用此值(640x800)作为原始值来获得裁剪图像
在本例中:
API url:
https://scontent.cdninstagram.com/hphotos-xpt1/t51.2885-15/sh0.08/e35/p640x640/10949090_860171600771180_267418389_n.jpg
原始url:
https://scontent.cdninstagram.com/hphotos-xpt1/t51.2885-15/sh0.08/e35/10949090_860171600771180_267418389_n.jpg
裁剪(640x640)url:
裁剪(从640x640裁剪为320x320)url:
裁剪(320x320)url:
问题是instagram api没有返回图像的原始大小,知道吗?感谢您,我发现获得更高分辨率的s320x320缩略图是我所需要的。Thanks@user782104请查看UPD以获取没有已知原始大小的缩略图。
https://scontent.cdninstagram.com/hphotos-xpt1/t51.2885-15/sh0.08/e35/p640x640/c0.80.640.640/10949090_860171600771180_267418389_n.jpg
https://scontent.cdninstagram.com/hphotos-xpt1/t51.2885-15/sh0.08/e35/p640x640/c160.240.320.320/10949090_860171600771180_267418389_n.jpg
https://scontent.cdninstagram.com/hphotos-xpt1/t51.2885-15/sh0.08/e35/p320x320/c0.40.320.320/10949090_860171600771180_267418389_n.jpg