此Imgur api调用返回一个列表,其中包含json中表示的Gallery Image和Gallery Album类.
我不知道如何使用Json.NET自动反序列化这些,因为没有$ type属性告诉反序列化器要表示哪个类.有一个名为"IsAlbum"的属性可用于区分两者.
这个问题似乎显示了一种方法,但它看起来有点像黑客.
我该如何反序列化这些类?(使用C#,Json.NET).
样本数据:
图库图片
{
"id": "OUHDm",
"title": "My most recent drawing. Spent over 100 hours.",
...
"is_album": false
}
Run Code Online (Sandbox Code Playgroud)
画廊专辑
{
"id": "lDRB2",
"title": "Imgur Office",
...
"is_album": true,
"images_count": 3,
"images": [
{
"id": "24nLu",
...
"link": "http://i.imgur.com/24nLu.jpg"
},
{
"id": "Ziz25",
...
"link": "http://i.imgur.com/Ziz25.jpg"
},
{
"id": "9tzW6",
...
"link": "http://i.imgur.com/9tzW6.jpg"
}
]
}
}
Run Code Online (Sandbox Code Playgroud)
}
import java.awt.List;
import java.awt.image.BufferedImage;
import java.io.BufferedReader;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.InputStreamReader;
import java.util.ArrayList;
import javax.imageio.ImageIO;
import org.apache.commons.codec.binary.Base64;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.omg.DynamicAny.NameValuePair;
public class Upload {
public static void main (String[] args) {
System.out.println(Imgur("C:\\Users\\username\\Desktop\\image.jpg", "clientID"));
}
public static String Imgur (String imageDir, String clientID) {
//create needed strings
String address = "https://api.imgur.com/3/image";
//Create HTTPClient and post
HttpClient client = new DefaultHttpClient();
HttpPost post = new HttpPost(address);
//create base64 image
BufferedImage …Run Code Online (Sandbox Code Playgroud) 这是对所有mathematica标记粉丝的挑战.让我们通过创建一个imgur上传器将图像插入到Mathematica的SO帖子中更加方便.
我们如何创建一个imgur[g_]将光栅化其参数的函数(确保最终大小不超过StackOverflow帖子的宽度),将其转换为PNG,将其上传到imgur,并返回准备粘贴的MarkDown行,如?
有用的参考:
我没有调整后一种方法来上传图像而不先将其导出到文件中.
警告,小心使用!StackOverflow使用单独的imgur安装,可以无限期地保留图像.如果你使用主要的imgur,如果没有人看到它们,图像将在6个月后消失.不幸的是,截至2011年11月,似乎没有正式的方式以编程方式将图像上传到StackOverflow.
更新: 请参阅下面的解决方案,直接上传到StackOverflow .
是否有任何损害通过像Imgur这样的网站托管图像,然后使用提供的代码将其插入我的网站?与在我的服务器上托管图像并适当链接它们的传统方式相比.
我正在尝试向Imgur API发出HTTP请求.我正在尝试检索与标签"cats"相关的所有图像.根据Imgur API,网址为:https://api.imgur.com/3/gallery/t/cats
Imgur API声明了以下有关获取请求所需的授权:
对于公共只读和匿名资源,例如获取图像信息,查找用户评论等,您只需要
client_id在您的请求中发送授权标题.如果您想要匿名上传图像(图像
不附加到帐户),或者您想要创建匿名
相册,这也适用.这让我们知道哪个应用程序正在访问API.Run Code Online (Sandbox Code Playgroud)Authorization: Client-ID YOUR_CLIENT_ID
我看了下面的问题,并尝试了那里的建议,但没有一个有帮助.
如何在Swift中创建一个Http get并设置httpHeader?
我目前的代码是这样的:
let string = "https://api.imgur.com/3/gallery/t/cats"
let url = NSURL(string: string)
let request = NSMutableURLRequest(URL: url!)
request.setValue("clientIDhere", forHTTPHeaderField: "Authorization")
//request.addValue("clientIDhere", forHTTPHeaderField: "Authorization")
request.HTTPMethod = "GET"
let session = NSURLSession.sharedSession()
let tache = session.dataTaskWithRequest(request) { (data, response, error) -> Void in
if let antwort = response as? NSHTTPURLResponse {
let code = antwort.statusCode
print(code)
}
}
tache.resume() …Run Code Online (Sandbox Code Playgroud) 我打算使用它的api匿名上传图像,我在匿名上传类别中注册了我的应用程序,并获得了客户端ID和客户端密码,如何使用php上传图像到imgur并检索到图像的直接URL?任何人都可以建议任何例子的链接?这是我试图做但我得到错误"致命错误:超过30秒的最大执行时间"
<?php
$client_id = :client_id; //put your api key here
$filename = "images/q401x74ua3402.jpg";
$handle = fopen($filename, "r");
$data = fread($handle, filesize($filename));
//$data is file data
$pvars = array('image' => base64_encode($data), 'key' => $client_id);
$timeout = 30;
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, 'https://api.imgur.com/3/upload.json');
curl_setopt($curl, CURLOPT_TIMEOUT, $timeout);
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, $pvars);
$xml = curl_exec($curl);
$xmlsimple = new SimpleXMLElement($xml);
echo '<img height="180" src="';
echo $xmlsimple->links->original;
echo '">';
curl_close ($curl);
?>
Run Code Online (Sandbox Code Playgroud) 我在网上找到的所有示例都是早期版本的Imgur API或非JS代码,所有这些都使用了新API中不存在的API密钥.相反,你得到一个client_id和secret.任何人都有示例代码,显示如何使用他们的API版本3通过JavaScript(或jQuery)将图像上传到Imgur?
我知道HTML5剪贴板API,它适用于Chrome.在Chrome中,当您粘贴二进制图像数据时,浏览器会触发一个paste包含event.clipboardData.types等于的事件['Files'],因此我可以将我的图像放在剪贴板中
var index = event.clipboardData.types.indexOf('Files');
if(index !== -1) {
var blob = event.clipboardData.items[index].getAsFile();
}
Run Code Online (Sandbox Code Playgroud)
在Firefox中,当我粘贴二进制图像数据时,浏览器也会触发粘贴事件,但它event.clipboardData.types是空的(有length === 0)并且event.clipboardData.getData('Files')显然会返回"".
顺便说一下,从浏览器复制图像也会设置一个"text/html"项,clipboardData其中包含复制的<img>元素.因此,在这些情况下,我可以通过将远程URL发送到服务器来解决问题,然后服务器将自己下载图像(如果服务器可以访问远程位置,这是不能保证的).
StackOverflow建议:
如何从Firefox中的剪贴板获取数据
(创建一个contenteditable <div>,请用户粘贴到该剪贴板然后复制内容.)
但是,imgur不这样做.这是如何运作的?
我正在使用 i mgur api通过节点 js 应用程序上传图像。
我正在将图像转换为 base64 字符串并通过 Postman 发送它们效果很好。
我node-fetch用来进行api调用。
const fetch = require('node-fetch')
...
async uploadImage(base64image) {
try {
const url = 'https://api.imgur.com/3/image'
const res = await fetch(url,
{
method: 'POST',
body: { image: base64image },
headers: {
'content-type': 'application/json',
'Authorization': 'Client-ID [my-client-id]',
'Access-Control-Allow-Headers': 'Content-Type, Authorization, Access-Control-Allow-Headers',
'Access-Control-Allow-Methods': 'POST',
}
}
)
console.log(res)
} catch(err) {
console.log(err)
}
}
Run Code Online (Sandbox Code Playgroud)
错误:从源“ http://localhost:3000 ”获取“ https://api.imgur.com/3/image ”的访问已被 CORS 策略阻止:请求标头字段Access-Control-Allow-Headers为预检响应中的Access-Control-Allow-Headers 不允许。 …
我正在尝试编写一个程序,将图像上传到imgur并返回url.我想开始尝试使用api,但要注册我的客户端ID,其中一个必填字段是"授权回调网址".描述说"回调URL用于确定Imgur在授权您的访问请求后重定向用户的位置......"
我的程序将在java的命令行中,或者也许是一个android应用程序.根据我的理解(这可能是错误的),这对于Web应用程序很有用,但是对于api的一般使用,似乎没有任何帮助.特别是如果我在命令行工作.是否有"默认"网址或我可以放入的内容?或者我误解了回调网址的目的?
imgur ×10
javascript ×3
api ×2
java ×2
c# ×1
callbackurl ×1
clipboard ×1
cors ×1
firefox ×1
hosting ×1
html5 ×1
httpclient ×1
image ×1
ios ×1
jlink ×1
jquery ×1
json.net ×1
node-fetch ×1
node.js ×1
nsurlsession ×1
php ×1
post ×1
security ×1
swift ×1