ImgURL Pro帮助文档

ImgURL是一款使用PHP开发的图床程序,分社区版和专业版(Pro),专业版支持七牛、FTP、S3等多种外部存储。

介绍

ImgURL首个版本诞生于2017年12月,经过重构 + 多个版本更新,于2019年7月上线ImgURL Pro专业版图床程序。ImgURL社区版将继续维护,但是功能有别于专业版。

img

  1. 如果仅是个人或内部使用一般社区版即可满足需要
  2. 若您需要多个外部存储,同时需要开放给其它用户使用,建议选择专业版。专业版使用MySQL数据库,性能更好。社区版使用SQLite 3数据库,该数据库对并发支持不是很好。

功能对比

img

专业版特点

环境要求

专业版演示

其他

ImgURL定价为198元/域名(不限制子域名),可享受6个月技术支持,和长期更新。

安装

环境要求

购买授权

ImgURL Pro需要进行授权,需要先前往:http://shop.imgurl.org/order 购买授权,购买后系统会将授权文件发送到您填写的邮箱(注意垃圾箱),邮件内容大致如下,请妥善保管下图中红框标识的内容。

img

注意:邮件里面有个key和一个授权文件(txt的附件)都会用到。

下载安装程序

2.x.x版本开始,程序的下载地址在授权邮件中一并提供,地址有效期只有7天,收到授权邮件后请尽快下载并保存到安全的地方。

修改配置文件

  1. 将站点目录下的config.simple.php复制一份命名为config.php
  2. 将邮件里面的key填写到config.php里面的$config['key'] 这一项

img

  1. 将邮件里面的授权文件(附件)xxx.txt上传到data/目录下(注意:请不要用工具打开或编辑这个授权文件,否则可能导致损坏导致授权失败!

新建数据库

请确保您已经安装了MySQL数据库(需要大于等于5.6)并新建一个空的数据库(数据库建议使用5.65.7版本,暂不支持8.x)

然后将data/imgurl_simple.sql 导入到新建的数据库中,宝塔用户可以打开phpMyadmin进行导入,注意要先点击选择数据库后再点导入,如下截图。

将站点根目录的db.config.simple.php复制一份命名为db.config.php

在db.config.php填写正确的数据库名称、用户名、密码

img

安装需要的PHP扩展

ImgURL 2.x需要以下PHP扩展:

如果是宝塔面板用户,可直接通过“PHP管理 - 安装扩展”找到上述扩展并安装即可。

配置伪静态

Nginx

将下面的规则添加到Nginx server段内,别忘记重载一次nginx

location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~* \.(db3|json)$ {
  deny all;
}
location ~* ^/(temp|upload|imgs|data|application|static|system)/.*.(php|php5)$ {
    return 403;
}

宝塔用户的话直接复制上面的规则粘贴到伪静态中,如下截图。

Apache

如果您使用的Apache一般不用再进行设置,默认已经内置Apache重写规则,位于站点根目录的.htaccess,内容如下:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]

IIS 7+(不推荐在IIS环境下运行)

以下规则适用于IIS 7以上,在站点根目录创建一个 web.config 文件,并添加以下内容:

<?xml version="1.0" encoding="UTF-8"?>
  <configuration>
      <system.webServer>
        <rewrite>
      <rules>
        <rule name="Rule" stopProcessing="true">
          <match url="^(.*)$" ignoreCase="false" />
          <conditions>
            <add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" negate="true" />
            <add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" negate="true" />
            <add input="{URL}" pattern="^/favicon.ico$" ignoreCase="false" negate="true" />
          </conditions>
          <action type="Rewrite" url="index.php/{R:1}" appendQueryString="true" />
        </rule>
      </rules>
    </rewrite> 
      </system.webServer>
</configuration>

安装

正常情况下,访问您的域名即可看到安装界面,根据页面提示设置网站的账号、密码即可。

img

基本使用

图片上传

上传功能没什么好说的,界面已经比较清晰明了,需要一提的是如果您选择粘贴上传,必须将鼠标移动到上传框内,否则上传不会有反应。

img

探索发现

点击导航菜单的探索发现按钮可以查阅游客上传的图片(管理员上传的图片不会在探索发现显示),可以根据类型来进行基本筛选。

img

探索发现页面鼠标移动到图片上

  1. 如果单击图片可以放大
  2. 如果是点击蓝色按钮会生成不同格式的链接供用户使用
  3. 点击蓝色地球按钮会进入探索发现页面
  4. 红色垃圾桶按钮可以删除图片(仅管理员登录后有权限)

img

URL上传

ImgURL后台支持URL上传,输入图片的URL链接即可,一次最多支持10个,该功能仅开放给管理员使用,游客无法使用。

img

外部存储

ImgURL Pro目前支持本地、Backblaze B2、腾讯云COS、FTP、七牛云等存储方式。

外部存储

存储方案

ImgURL Pro目前支持本地、Backblaze B2、腾讯云COS、FTP、七牛云等存储方式(后期可能将支持更多)

在后台 - 系统设置 - 存储方案可以看到所有存储设置。

存储方案选择

注意事项

本地存储和FTP存储,域名设置后面没有斜杠(/)外,其余的存储在设置的时候必须有斜杠(/),否则会存在异常。

其它说明

img

  1. 如果游客上传设置为“否”,则游客无法选择该上传方式,管理员依然可以选择。
  2. 如果开关为“关闭”,则无论是管理员还是游客都无法选择该上传方式。
外部存储

本地存储

本地存储图片是保存在服务器的,会占用服务器磁盘空间、带宽等资源,该存储是默认的(无法关闭上传),一般不需要额外设置,如有需要可以单独为本地存储绑定一个CDN域名。(注意:本地存储的域名最后没有斜杠(/)

img

绑定CDN域名思路

假设您创建了一个站点A,并将图床安装到了A,如果希望图片通过CDN域名来访问,只需要做如下操作。

  1. 在站点A额外绑定一个域名B
  2. 然后到第三方CDN服务商(如CloudFlare)对域名B启用CDN加速
  3. 最后打开ImgURL后台 - 系统设置 - 存储方案 - 本地 - 填写B域名并启用
外部存储

Backblaze B2

关于Backblaze

Backblaze是一家国外的备份、存储提供商,B2存储有免费10G的额度,价格非常低廉,如果存储1G的数据,仅需5$/月,如果有需要的可以前往:https://www.backblaze.com/ 进行注册。

获取密钥

登录之后在后台B2云存储 - 创建一个桶 - 权限设置为公开,如下图。(如果您打开不是中文界面,可以在B2网页右下方设置为中文语言

img

接下来我们需要获取4个重要的参数,用于B2 API设置。

打开后台B2云存储 - App Keys,同时点击“生成新的主应用程序密钥”(只会出现一次,请妥善保存)

img

上面我们已经获取到“KeyID”和“主程序密钥”2个参数了,继续切换到“B2云存储” - 桶,可以查看到刚刚创建的桶“imgurl”有一个“桶身份证”把它记录下来。

img

接下来点击“上传/下载按钮”往里面随便传一个文件,点击文件详情,获取友好的URL地址,比如:https://f002.backblazeb2.com/file/imgurl/imgs/2019/06/a91bf049535ce20a.jpg

img

我们只需要https://f002.backblazeb2.com/file/imgurl/ 这部分就行了,这样我们4个参数已经获取完毕,分别是是:<KeyID><主程序密钥><桶身份证><友好URL>

修改配置文件

打开站点根目录的config.php ,填写对应的信息,只需要填写下面三项(其余选项不填写):

img

启用B2存储

打开ImgURL后台 - 系统设置 - 存储方案 - 对B2存储进行设置,绑定域名填写上面获取到的“友好URL”,并开启允许上传。

img

启用CloudFlare CDN

如果需要对B2存储启用CloudFlare CDN可以参考:Backblaze B2,低价的对象存储,支持接入CloudFlare CDN

注意事项

外部存储

腾讯COS

COS是腾讯提供的对象存储服务,全称为Cloud Object Storage,COS

新建bucket

在腾讯云后台 - 根据提示创建存储桶 - 存储桶权限为“公有读私有写”。

img

获取密钥

直接访问:https://console.cloud.tencent.com/cam/capi 获取需要的密钥信息,如果没有自行点击新建密钥即可。

img

这个页面我们需要3个参数,分别为<APPID><SecretId><SecretKey>把它保存下来。

获取COS地域

在创建存储桶的时候会让你选择存储桶的地区,对应地区域名列表,请参考:https://cloud.tencent.com/document/product/436/6224

假如存储桶地区为“广州(华南)”我们需要的地址为“cos.ap-guangzhou.myqcloud.com

修改配置文件

打开站点根目录下的config.php 找到腾讯COS设置,填写对应的信息:

启用腾讯COS

打开ImgURL后台 - 系统设置 - 存储方案 - 腾讯COS - 设置COS绑定域名并进行启用即可。

img

注意事项

外部存储

FTP

在使用FTP存储之前,请确保已经有正常可用的FTP服务,同时确保PHP已经支持FTP组件,可以在ImgURL Pro后台首页查看是否支持FTP组件。

img

适用场景

FTP存储方式非常灵活,可以将图片存储在你想要的服务器上。比如您图床安装在A服务器,绑定了A域名,但是希望将图片上传到B服务器,使用B域名来访问图片,您只需要:

  1. 在B服务器新建一个站点,绑定B域名
  2. 在B服务器开设一个FTP账号,目录指向到B站点
  3. 修改config.php 配置文件,设置FTP信息
  4. 在ImgURL后台 - 系统设置 - 存储方案 - FTP,填写B域名的信息,并启用即可

修改配置文件

打开站点根目录下的config.php文件,找到FTP设置,填写FTP地址、账号、密码等信息。

启用FTP存储

在ImgURL后台 - 系统设置 - 存储方案 - FTP,填写FTP绑定域名,并启用。

img

宝塔面板无法上传的问题

修改宝塔配置pure-ftp配置文件 /www/server/pure-ftpd/etc/pure-ftpd.conf

TLS 1

改成

TLS 0

然后重启下FTP: /etc/init.d/pure-ftpd restart

注意事项

外部存储

七牛云

自ImgURL Pro v1.1之后开始支持七牛云存储

新建存储空间

在七牛云后台 - 对象存储 - 新建存储空间,如下截图。

img

获取密钥

后台 - 个人中心 - 密钥管理,或者登录后直接访问:https://portal.qiniu.com/user/key 获取AccessKey/SecretKey,如下图。

img

修改配置文件

打开 config.php 找到七牛云设置,填写对应信息。

img

启用七牛云存储

打开ImgURL后台 - 系统设置 - 存储方案 - 七牛云 - 设置七牛云空间绑定域名并进行启用即可。

img

注意事项

外部存储

AWS S3

2.0.0版本开始支持AWS S3存储,只要是支持S3协议的都可以,并非一定要用AWS S3,您也可以自建minio等。

修改config.php

config.php中找到S3的配置,内容如下:

$config['s3']['region']	=	'us-east-1';
$config['s3']['endpoint']	=	'http://minio.xxx.com:9000';
$config['s3']['key']	=	'xxx';
$config['s3']['secret']	=	'xxx';
$config['s3']['bucket']	=	'xxx';

设置域名

在后台设置 - 系统设置 - 存储方案 - S3设置S3绑定的访问域名,注意,末尾需要带有/

注意S3的开关只对游客有效,如果是注册用户,并且设置了“注册用户默认存储策略”为S3,是否启用对注册用户都有效。

兼容存储

大部分对象存储都对AWS S3协议做了兼容,以下是部分存储的设置方法。

七牛云

七牛云后台 - 空间管理 - 新建空间 - 存储空间名称,名称根据规则填写即可,这个名称对应config.php里面的:$config['s3']['bucket'],存储区域选择离你图床最近的服务器,访问控制选择公开。

访问https://developer.qiniu.com/kodo/4088/s3-access-domainname获取“区域简称”和“访问 Endpoint”,对应关系如下:

访问https://portal.qiniu.com/user/key获取七牛的AccessKey/SecretKey对应关系如下:

在ImgURL后台 - 系统设置 - 存储方案 - S3绑定域名填写七牛的空间绑定域名,注意末尾需要带有/,如下截图。

阿里云

登录阿里云OSS后台:https://oss.console.aliyun.com/bucket - 创建 Bucket,按照如下截图填写。

打开站点根目录下的config.php,找到S3的配置选项:

$config['s3']['region']	=	'us-east-1';
$config['s3']['endpoint']	=	'http://minio.xxx.com:9000';
$config['s3']['key']	=	'xxx';
$config['s3']['secret']	=	'xxx';
$config['s3']['bucket']	=	'xxx';

继续打开阿里云文档:公共云下OSS Region和Endpoint对照表,对应关系如下:

继续打开阿里云:访问凭证管理 获取AccessKey ID 和 AccessKey Secret

完整的配置如下:

$config['s3']['region']	=	'oss-ap-southeast-1';
$config['s3']['endpoint']	=	'http://bucket.oss-ap-southeast-1.aliyuncs.com';
$config['s3']['key']	=	'xxx';
$config['s3']['secret']	=	'xxx';
$config['s3']['bucket']	=	'bucket';

Backblaze B2

Backblaze是一家国外的备份、存储提供商,B2存储有免费10G的额度,价格非常低廉,如果存储1TB数据,仅需5$/月,如果有需要的可以前往:https://www.backblaze.com/ 进行注册。

登录B2后台 - 创建一个桶。

  1. 桶独特的名字:就是存储桶的名称
  2. 桶里面的档案是:公众
  3. 其它选项保持默认

找到刚刚创建的桶 - 点桶设定。

桶信息设置为{"cache-control":"max-age=604800"}这一行的意思是让浏览器缓存7天,不然每次都回源,浪费流量。

继续点生命周期的设置 - 选择“只保留了最后版本的文件”

B2后台点击左侧 - 账户 - 我的应用程序键 - 添加新的应用程序密钥。

按照下图填写。

创建成功后程序密钥只会出现一次,之一复制并保存下来,稍后使用。

接下来修改config.php填写S3配置信息,B2的配置参考如下:

/*------------------------------------- S3设置 -------------------------------------*/
$config['s3']['region']	=	'us-west-002';
$config['s3']['endpoint']	=	'https://s3.us-west-002.backblazeb2.com';
$config['s3']['key']	=	'xxx';
$config['s3']['secret']	=	'xxx';
$config['s3']['bucket']	=	'xxx';
/*------------------------------------- S3设置END -------------------------------------*/

region/endpoint通过浏览B2的档案,获取到一个S3 URL地址,格式如:https://bucket.s3.us-west-002.backblazeb2.com/imgs/2022/03/28/00f925c6550c3154.jpg

那么region则为us-west-002,endpoint则为https://s3.us-west-002.backblazeb2.com

升级

重要提醒

升级之前请备数据(包括数据库),升级之前请备份数据(包括数据库),升级之前请备份数据(包括数据库),未备份数据导致升级出现异常本人不承担任何责任。

此方法适用于ImgURL Pro(专业版),社区版(免费版)请参考社区版方法进行升级。

查看版本号

登录ImgURL后台(首页)底部可以查看当前版本号,如下截图当前版本号为v1.0,请根据自身对应版本号进行升级,注意:若没有特殊说明不可跨版本升级,比如v1.0直接跳过v1.1升级为v1.2

img

v2.0.x升级2.1.x

  1. 备份好你的网站程序以及数据库(非常重要,作者不承担任何数据丢失风险)
  2. 下载2.1.x的安装包imgurl-pro-2.1.x.zip并上传到您站点根目录,解压覆盖(覆盖完毕后建议管理员后台按Ctrl + F5多刷新几次,避免缓存)
  3. 找到2.1.x源码包里面data/sql/20220515.sql这个数据库升级文件,把他下载到你本地
  4. 然后选择您正在使用的imgurl数据库,并执行上面那个20220515.sql文件,比如phpMyadmin的做法是先选择数据库,然后点导入执行即可
  5. 如果有使用opcache组件,请重启PHP或重启一次php-fpm进程
  6. 删除安装包imgurl-pro-2.1.x.zip避免被坏蛋下载

v1.x升级v2.1.x

  1. 备份好你的网站程序以及数据库(非常重要,作者不承担任何数据丢失风险)
  2. 下载2.1.x的安装包imgurl-pro-2.1.x.zip并上传到您站点根目录,解压覆盖(覆盖完毕后建议管理员后台按Ctrl + F5多刷新几次,避免缓存)
  3. 找到2.1.x源码包里面data/sql/20220328.sqldata/sql/20220515.sql这个2个数据库升级文件,把他下载到你本地
  4. 然后选择您正在使用的imgurl数据库,并执行上面2个.sql文件,比如phpMyadmin的做法是先选择数据库,然后点导入执行即可(注意:先执行20220328.sql,然后再执行20220515.sql
  5. 注意2.1.x版本要求支持redis,否则用户功能无法使用,宝塔用户可以直接在你对应的PHP版本 - 安装扩展 - 选择redis进行安装。
  6. 修改站点目录下的config.php配置文件,在末尾追加如下配置内容:
/*-------------------------------------Redis配置信息,2022.03新增-------------------------------------*/
$config['socket_type'] = 'tcp'; //`tcp` or `unix`
// $config['socket'] = '/var/run/redis.sock'; // in case of `unix` socket type
$config['redis']['host'] = '127.0.0.1';
$config['redis']['password'] = NULL;
$config['redis']['port'] = 6379;
$config['redis']['timeout'] = 10;
/*-------------------------------------Redis配置END--------------------------------------------------*/

/*------------------------------------- S3设置 -------------------------------------*/
//请先阅读帮助文档:https://dwz.ovh/a
$config['s3']['region']	=	'us-east-1';
$config['s3']['endpoint']	=	'';
$config['s3']['key']	=	'';
$config['s3']['secret']	=	'';
$config['s3']['bucket']	=	'';
/*------------------------------------- S3设置END -------------------------------------*/

/*------------------------------------- 接口频率限制 -------------------------------------*/
//单IP,10分钟内,上传接口请求频率限制
$config['limit']['up_qps']	=	500;
//单IP,24H内,发送邮件频率
$config['limit']['mail_qps']	=	20;
//单IP,1分支内,删除接口频率限制
$config['limit']['delete_qps']	=	30;
/*------------------------------------- 接口频率限制END -------------------------------------*/
  1. 登录你的ImgURL管理员后台,系统设置 - 站点设置 - SMTP设置 - 配置你的SMTP发件信息,否则注册用户无法收到验证码,将无法注册。(注意:先点保存,再点发送测试
  2. 打开系统设置 - 存储方案 - 设置注册用户默认存储策略,目前仅支持本地和S3,选择其中一个点保存,否则注册用户无法上传。
  3. 继续打开系统设置 - 上传限制 - 设置用户的初始上传数量(默认是0也就是说用户注册后无法上传),如果您希望用户注册后拥有一定的初始上传容量,在这里设置,存储容量暂时没用,可以不用管。
  4. 至此升级已全部完成,如有问题,请联系QQ:446199062进行反馈

补充说明:ImgURL Pro默认售后支持时间为购买日起6个月,如果超过6个月且需要提供远程技术支持的需要额外收取一定费用,敬请理解。

v1.0升级v1.1

  1. 先备份当前数据(包括数据库)
  2. 下载v1.1源码:http://soft.xiaoz.org/source/imgurl/imgurl-pro_v1.1.tar.gz 解压覆盖
  3. 修改 config.php 在底部添加如下代码(七牛云存储需要使用)
/*-------------------------------------七牛云设置-------------------------------------*/
//请先阅读帮助文档:https://dwz.ovh/a
$config['qiniu']['AccessKey']	=	'';
$config['qiniu']['SecretKey']	=	'';
$config['qiniu']['bucket']	=	'';
//上传地址,参见:https://developer.qiniu.com/kodo/manual/1671/region-endpoint
$config['qiniu']['up_host']	=	'';
/*-------------------------------------七牛云设置END-------------------------------------*/

v1.1升级v1.12

使用CDN

ImgURL支持对每个存储单独设置域名,建议对这些域名启用CDN,而不是对主站(访问域名)启用CDN,如果需要对主站(访问域名)启用CDN,请按照如下设置,否则可能无法正常使用。

CDN缓存设置

以下路径请不要设置缓存,否则无法正常使用。

其它路径可根据自身需要设置缓存。

管理维护

登录后台

ImgURL底部有个“login”按钮可以登录后台,或者访问您的域名:http://domian.com/user/login 进行登录。

img

上传限制

默认情况下单张图片不得超过5M,游客每天限制上传10张图片。您可以在后台 - 系统设置 - 上传限制做出修改。

img

  1. 上传数量如果为0则不允许游客上传
  2. 上传大小最大允许为10(Mb)

图片压缩

ImgURL使用Tinypng提供的图片压缩接口,因此需要先访问:http://tinypng.org/ 申请API

然后在【系统设置】 - 图片处理 - 图片压缩进行设置,必须填写2个,您可以用多个账号申请Tinypng key或者创建多个key填写即可。(注意:仅本地上传的图片可以压缩,其它存储类型不支持压缩

img

在图片管理中可以看到压缩按钮,白色背景说明该图片还没有压缩,蓝色背景说明图片已经压缩。

img

图片鉴黄

ImgURL使用Moderate Content提供的API来进行图片鉴黄,因此您需要先在https://www.moderatecontent.com/ 申请API key

然后打开【系统设置】 - 图片鉴黄进行开启。

img

API识别无法做到100%准确,识别后的图片会被标记为可疑图片等待管理员审核,您可以在【图片管理】 - 可疑图片进行查看,如果存在误判,可点击下图中的按钮取消。

img

添加评论代码

ImgURL支持添加评论代码(如disqus),方法如下:

  1. 创建一个application/views/user/comment.html文件
  2. 然后将评论代码添加到comment.html这个文件 3 . 最后访问查看效果

img

重置密码

如果用户名或密码遗忘,可通过以下方法重置。

1.创建一个data/password.txt文件 2.然后访问http:/domain.com/user/resetpass 根据页面提示完成重置

img

3.最后删除data/password.txt文件(一定要删除这个文件,否则任何人都可以重置密码

设置提示

首页的提示可以在后台 - 系统设置 - 站点设置 - 首页公告进行设置(支持HTML代码)

img

img

常见问题

为什么我上传图片后探索发现不显示我刚刚上传的图片?

探索发现仅显示游客上传的图片,如果是管理员上传的则不会显示到探索发现中。


为什么某些图片上传后Delete Link(删除链接)显示是空的?

Delete Link自始至终只会显示一次,ImgURL具有图片去重功能,也就是说假如这张图片之前已经上传过,则不会重复上传到服务器,直接从数据库返回信息,因此则不再显示Delete Link


我之前用的社区版可以升级为专业版吗?

可以,社区版使用的SQLite 3数据库,而专业版使用的MySQL数据库,数据库结构和字段都发生了变化,您购买专业版后请联系作者协助升级。


我可以更改域名授权吗?

可以,更改域名授权的规则如下。

  1. 假如您购买时填写的域名为test.abc.com,后期想更改子域名,比如更改为img.abc.com,可以不限次更换,前往https://shop.imgurl.org/home/change_auth 自主更换授权即可。
  2. 假如您购买时填写的域名为test.abc.com,后期想更换为test.123.com,有1次更换机会,需要联系作者手动处理。
  3. 也就是说更换子域名不限次,更换主域名(顶级域名)只有1次机会。

账号、密码正确,登录后提示权限不足?

如果使用的360浏览器,请切换为极速模式,或使用Google Chrome浏览器或Firefox


为什么粘贴上传的图片,命名选择了存储方式,但依然上传到了本地?

这个是已知问题,由于技术架构原因,目前粘贴上传仅支持上传到本地,后期会逐渐优化,感谢支持。


访问安装页面出现404?

这种情况通常是没有设置伪静态规则导致,请参考:配置伪静态


访问首页出现500错误?

  1. 检查数据库文件data/imgurl_simple.sql是否导入
  2. 检查db.config.php配置的数据库账号、密码是否正确
  3. 检查Redis扩展是否安装

插件

油猴脚本

ImgURL还开发了便利的油猴脚本,可在任意网页将图片上传至ImgURL,参考《使用油猴脚本(Tamper monkey)在任意网页上传图片

ImgURL单页版

ImgURL单页版依赖于ImgURL后端API,纯静态页面,不需要PHP等环境,适合轻度使用,详细说明请参考:《使用ImgURL单页版将图片上传至ImgURL图床

使用ShareX + ImgURL,截图后自动上传

通过ShareX截图工具,再配合ImgURL 提供的上传API,可实现截图后自动上传到ImgURL并返回图片链接,具体请参考:使用ShareX + ImgURL,截图后自动上传、自动返回图片链接

将ImgURL集成到网站

通过xiaoz提供的js脚本,可实现将ImgURL集成到您自己的网站,具体参考:将ImgURL图床集成到您的网站

其它插件

开发中...敬请期待!

上传API

如果您还没有注册ImgURL免费图床,请先前往https://imgurl.org/vip/user#user=register 注册您的账号。

上传接口

注意:如果您的账号不是在imgurl.org注册,请改成对应服务商的域名。

请求参数

参数名 类型 是否必须 参数说明
file file 支持jpg/jgeg/png/gif/bmp/webp格式
uid string 通过ImgURL后台获取
token string 通过ImgURL后台获取

获取UID及Token

注册并登录ImgURL后,在用户后台 - 管理 - API Token查看您的UID

首次使用需要点击生成按钮以生成Token

请妥善保管您的Token,如果Token遭到泄露,可点击按钮更换。

返回值

如果请求成功,返回结果如下:

{
    "code": 200,
    "msg": "",
    "data":
    {
        "relative_path": "imgs\/2022\/03\/30\/f4a2eeb2689f9c19.jpg",
        "url": "https:\/\/s3.bmp.ovh\/imgs\/2022\/03\/30\/f4a2eeb2689f9c19.jpg",
        "thumbnail_url": "https:\/\/s3.bmp.ovh\/imgs\/2022\/03\/30\/f4a2eeb2689f9c19_thumb.jpg",
        "image_width": 1080,
        "image_height": 810,
        "client_name": "sanc1.jpg",
        "id": 1221739,
        "imgid": "f4a2eeb2689f9c19",
        "delete": "https:\/\/imgurl.org\/delete\/649cbe0133f7ef95"
    }
}
参数名 类型 参数说明
code int 状态码,200:成功,-1000:失败
msg string 如果成功返回空,如果失败则返回错误信息
data int 图像数据,各参数含义如下
data.relative_path string 图片相对路径
data.url string 图片URL地址
data.thumbnail_url string 图片缩略图URL,如果没有生成缩略图,则和data.url地址相同
data.image_width float 图片宽
data.image_height int 图片高
data.client_name string 图片原始名称
data.id int 图片序号
data.imgid string(16) 图片唯一ID
data.delete string 图片删除地址,访问改地址图片将被删除

如果失败,返回结果为:

{
    "code": -1000,
    "msg": "上传失败,错误原因:The file you are attempting to upload is larger than the permitted size.",
    "data": ""
}

演示代码

以下代码仅作为上传接口演示,正式环境中请勿使用,因为token信息明文保存在网页中,存在极大的安全风险。

<!DOCTYPE html>
<html lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta charset="utf-8" />
    <title>ImgURL上传测试</title>
    <meta name="generator" content="EverEdit" />
    <meta name="author" content="" />
    <meta name="keywords" content="" />
    <meta name="description" content="" />
</head>
<body>
    <form enctype="multipart/form-data" method="post" action="https://www.imgurl.org/api/v2/upload" id="upform">
    <input type="text" name="uid" value = "您的UID" hidden>
    <input type="text" name="token" value = "您的Token" hidden>
    <input type="file" name="file">
    <input type="submit" id="btn" value="开始上传" class="btn">
    </form>
</body>
</html>

客户端

通过客户端将图片上传至ImgURL

客户端

ShareX上传

ShareX是一款非常强大的截图、图像编辑、图像上传软件,可以帮助你完成一系列自动化操作,比如截图后自动上传至ImgURL,自动获取图片URL并复制到剪贴板。

配套视频教程:https://www.bilibili.com/video/BV13F411g7Uu/

安装ShareX

ShareX仅支持Windows系统,请前往Github下载并安装:https://github.com/ShareX/ShareX/releases

获取ImgURL API

  1. 首先您需要在ImgURL注册一个账号:https://www.imgurl.org/vip/user 亦或者其它ImgURL Pro站点均可。
  2. 注册完毕并登录后在ImgURL用户后台找到API地址/UID/Token三个参数并记录

配置ShareX

运行ShareX后会出现在右下角,鼠标右键 - 目标 - 自定义上传器设置:

复制下面的内容并修改为你自己的信息:

{
    "Version": "13.7.0",
    "Name": "ImgURL",
    "DestinationType": "ImageUploader",
    "RequestMethod": "POST",
    "RequestURL": "https://www.imgurl.org/api/v2/upload",
    "Body": "MultipartFormData",
    "Arguments":
    {
        "uid": "xxx",
        "token": "xxx"
    },
    "FileFormName": "file",
    "URL": "$json:data.url$",
    "ThumbnailURL": "$json:data.thumbnail_url$",
    "DeletionURL": "$json:data.delete$",
    "ErrorMessage": "$json:msg$"
}

其中$json:data.url$是返回的图片原始URL,如果您想修改为其它链接格式,参考如下:

修改完毕后复制上面的json内容,点导入 - 从剪贴板导入

再次鼠标右键ShareX图标 - 点快捷键设置

添加一个快捷键,并按照如下图设置

效果演示

完成设置后,ShareX会帮助我们自动将截图上传至ImgURL,并返回URL链接到剪贴板直接粘贴使用,如下图。

客户端

通过uTools插件上传图片

视频介绍:https://www.bilibili.com/video/BV1hY411E7vb/

ImgURL Pro已上线uTools插件,可以在uTools插件市场搜索“imgurl”进行安装。

插件配置

  1. 首先您需要在ImgURL注册一个账号:https://www.imgurl.org/vip/user 亦或者其它ImgURL Pro站点均可。
  2. 注册完毕并登录后在ImgURL用户后台找到API地址/UID/Token三个参数并记录
  3. 打开uTools输入关键词imgurl/图床/tc均可打开ImgURL插件,点击右下角设置按钮
  4. 分别填写刚刚记录的API地址/UID/Token三个参数,注意API地址只需要填写前面部分即可不需要后面的具体路径,比如用户后台查看到的地址为:https://www.imgurl.org/api/v2/upload那么您只需要填写https://www.imgurl.org即可。
  5. 最后开始上传你的图片

使用说明

点击上传框可同时最多上传3张图片,鼠标移动到图片上方会显示链接复制按钮。

您也可以点击右下角的复制按钮批量复制URL链接。

当3个队列满了之后您需要点击重置按钮清空上传队列。

管理图片

如果您需要查看已上传图片列表或删除图片,可点插件右上方的“后台管理”登录ImgURL后台进行操作。

反馈

如有问题或者建议,可以在插件市场对该插件评论反馈。

客户端

通过PicGo上传

PicGo是一款跨平台图片上传客户端,支持Windows、Linux、MacOS操作系统,支持将图片上传到多个目标,比如ImgURL、SM.MS等图床。

配套视频:https://www.bilibili.com/video/BV1va411i74F

安装PicGo

  1. 前往Github:https://github.com/Molunerfinn/PicGo/releases 根据你的平台下载最新版本安装。
  2. 前往Node.js官网:https://nodejs.org/zh-cn/ 下载最新版Node.js安装(PicGo插件需要)
  3. 退出PicGo并重新打开,在插件设置中搜索“web-uploader”找到下面这个插件进行安装

获取ImgURL API

  1. 首先您需要在ImgURL注册一个账号:https://www.imgurl.org/vip/user 亦或者其它ImgURL Pro站点均可。
  2. 注册完毕并登录后在ImgURL用户后台找到API地址/UID/Token三个参数并记录,稍后需要使用

设置PicGo

打开PicGo - 图床设置 - 自定义Web图床,填写上一步获取到的API信息,如下图。

{"uid":"your uid","token":"your token"}
  1. your uid:改成你在ImgURL获取到的UID
  2. your token:改成你在ImgURL获取到的Token

然后点击确定进行保存,同时你也可以将其设置为默认图床。

上传图片

PicGo支持多种上传方式,比如快捷键上传、悬浮球上传、鼠标右键上传,下面分别介绍下不同上传方式。

快捷键上传:

你在本地选择一种图片,并按Ctrl + C后,再按Ctrl + Shift + P可以自动将选择的图片上传到PicGo,同时自动将URL链接放到剪贴板中。

悬浮球上传

点击PicGo界面右上方的“+”按钮,会在桌面出现一个悬浮球。

然后把需要上传的图片拖到悬浮球即可。

鼠标右键上传

选中需要上传的图片,鼠标右键 - 选择“Upload pictures with PicGo”即可。

其它

PicGo官网:https://picgo.github.io/PicGo-Doc/

网站插件

ImgURL支持各种网站插件,比如苹果CMS

网站插件

苹果CMS插件

ImgURL支持苹果CMS插件,前提是您已经在https://www.imgurl.org/vip/user 注册账号。

使用方法

在ImgURL后台(https://www.imgurl.org/vip/manage/mytoken) - 管理 - API token,获取“API地址、UID、Token”并记录。

下载ImgURL苹果CMS插件.zip将里面的文件上传到您苹果CMS对应目录。

然后在苹果CMS后台,保存方式选择“ImgURL Pro”,同时填写上面获取到的“API地址、UID、Token”,然后点保存。

最后同步图片进行测试。

更新日志

v1.1

v1.0

管理维护

ImgURL Pro管理员维护手册,普通注册用户无需关注。

管理维护

启用用户注册功能与用户管理

2.0.0版本开始支持用户注册功能,用户注册后可单独管理自己的图片,且可以对默认注册用户设置默认的上传数量,也可以单独对某个用户设置指定的上传数量。

开启用户注册

注意2.0.0版本要求支持redis,否则用户功能无法使用,宝塔用户可以直接在你对应的PHP版本 - 安装扩展 - 选择redis进行安装。

登录你的ImgURL管理员后台,系统设置 - 站点设置 - SMTP设置 - 配置你的SMTP发件信息,否则注册用户无法收到验证码,将无法注册。

打开系统设置 - 存储方案 - 设置注册用户默认存储策略,目前仅支持本地和S3,选择其中一个点保存,否则注册用户无法上传。

注意:如果要使用S3作为存储,您需要在config.php设置S3信息,同时在后台“系统设置 - 存储方案 - S3进行启用”

继续打开系统设置 - 上传限制 - 设置用户的初始上传数量(默认是0也就是说用户注册后无法上传),如果您希望用户注册后拥有一定的初始上传容量,在这里设置,存储容量暂时没用,可以不用管。

关闭用户注册

在系统设置 - 站点设置 - 用户注册,选择关闭并保存即可。

修改指定用户的上传数量

在后台 - 系统设置 - 用户管理 - 找到用户(或者搜索用户邮箱) - 点设置。

底部有2个策略,一个扩展策略一个默认策略,如果扩展策略有效期大于当前日期,则扩展策略生效,否则默认策略生效。

禁用用户

依然在在后台 - 系统设置 - 用户管理 - 找到用户(或者搜索用户邮箱) - 点设置 - 禁用用户。

管理维护

图片鉴黄

ImgURL Pro支持Moderate Content和NSFW两种鉴黄API,Moderate Content需要申请API后才能使用,NSFW API则需要自行部署,下面分别介绍下两种方式的配置和使用。

使用Moderate Content

需要在https://www.moderatecontent.com/signup使用你自己的邮箱申请API KEY,然后填写到“系统设置 - 图片处理 - 图片鉴黄 - 输入Moderate Content API KEY”,按照下面4个步骤设置。

注意:Moderate Content免费版只支持每月10000张图片,您可以多用几个邮箱申请Moderate Content API KEY,然后可填写多个key,一行一个,这样容量可以叠加。

使用NSFW API

NSFW API需要自行部署,建议NSFW API部署在ImgURL Pro的同一台服务器,这样可以使用本地回环网络访问,更加安全。

操作之前,请先确保您已经安装好了Docker,然后复制下面的命令部署nsfw_api:

docker run -d -p 127.0.0.1:5000:5000/tcp \
  --env PORT=5000 \
  --restart=always \
  eugencepoi/nsfw_api:latest

注意:如果NSFW API不是部署在和ImgURL Pro同一台服务器,请去掉上面的127.0.0.1:,这样您的API将被公开调用,可能存在被他人滥用的风险。

部署完毕后您可以通过curl命令测试是否成功:

curl -X GET -H 'Content-Type: application/json' "http://127.0.0.1:5000?url=https://www.google.com/images/branding/googlelogo/2x/googlelogo_color_272x92dp.png"

如果成功,会返回类似下面的json内容:

{
    "score": 0.00016061133646871895,
    "url": "https://www.google.com/images/branding/googlelogo/2x/googlelogo_color_272x92dp.png"
}

在ImgURL Pro后台,“系统设置 - 图片处理 - 图片鉴黄”,NSFW API URL填写http://127.0.0.1:5000,如下截图的4个步骤:

测试

设置完毕后,在ImgURL Pro前台上传页面,上传H图测试,如果识别为H图会弹出提示警告。

注意:目前没有哪家的API能做到100%完全准确,只能起到一定辅助作用,建议API + 人工审核。

后台管理

识别成功的图片会出现在“ImgURL后台 - 图片管理 - 可疑图片中”。

管理维护

图片实时压缩(实验功能)

ImgURL Pro本地存储方式支持Tinypng压缩,但是存在以下3个缺陷:

  1. 不是实时压缩
  2. 依赖Tinypng API压缩,网络影响比较大,效率非常低
  3. 不支持其它存储方式压缩

为了解决这个问题,从ImgURL 2.x开始支持实时压缩方案,默认隐藏且不开启,该功能处于实验阶段,后期可能会有所调整,如需开启的朋友按照下面的步骤操作即可。

前提条件

  1. PHP已经安装imagemagick扩展,宝塔用户可以在PHP管理里面查看和安装,如下图。
  2. 安装pngquant(仅Linux),需要在命令行操作,方法如下:
#CentOS 7.x
yum -y install pngquant
#Debian or Ubuntu
sudo apt-get install pngquant
  1. 修改配置文件config.php在底部加入如下内容:
//开启压缩,默认不开放
$config['compress']['switch'] = TRUE;
//压缩质量,数字越小,压缩效果越好,但是速度越慢,建议配置在70-80
$config['compress']['quality'] = 80;
//pngquant路径,可以先用which pngquant命令查看是否是下面的路径,如果不是,则修改
$config['compress']['pngquant'] = '/usr/bin/pngquant';
  1. 开启PHP的exec函数,宝塔用户可以在PHP管理 - 禁用函数 - 找到exec,并将其删除
  2. 最后重启PHP,上传图片对比图片大小查看效果

注意

  1. 使用此功能建议服务器最低配置为2C4G
  2. 该功能仅支持压缩.jpg/.png,其它格式暂不支持
管理维护

自定义导航

2.0.2版本开始支持自定义导航,设置方法如下。

自定义游客导航菜单

未登录情况下,用户看到的菜单界面如下,其中红色方框中标出的支持自定义,未标出的则不支持自定义。

在ImgURL Pro后台“系统设置 - 站点设置 - 自定义导航 - 游客顶部导航代码”进行设置,填写以下HTML代码(请根据自身情况修改):

<li class="layui-nav-item"><a href="/found"><i class="layui-icon layui-icon-search"></i> 探索发现</a></li>
<li class="layui-nav-item"><a href="https://vip.imgurl.org/page/vip" rel="nofollow" target="_blank"><i class="layui-icon layui-icon-fire" style="color:#FF5722;"></i> VIP服务</a></li>
<li class="layui-nav-item"><a href="https://www.xiaoz.me/archives/13225" rel="nofollow" target="_blank"><i class="layui-icon layui-icon-cart"></i> 购买专业版</a></li>
<li class="layui-nav-item"><a href="https://dwz.ovh/vwok9" title="通过客户端上传" rel="nofollow" target="_blank"><i class="layui-icon layui-icon-cellphone-fine"></i> 客户端</a></li>

修改并保存后显示效果如下。

注意:

  1. 自定义导航部分手机设备访问会被自动隐藏
  2. 如果您需要修改或自定义字体图标,可以参考LayUI字体图标

自定义用户顶部导航代码

此部分设置对已经注册账号的用户生效,在ImgURL Pro后台“系统设置 - 站点设置 - 自定义导航 - 用户顶部导航代码”进行设置,填写以下HTML代码(请根据自身情况修改):

<menu-item name="1">
<a href="/found"><Icon type="md-search" /></Icon> 探索发现</a>
</menu-item>

<menu-item name="2" class="i-xs-hide">
<a href="https://vip.imgurl.org/page/vip"><Icon type="md-flame" /></Icon> VIP服务</a>
</menu-item>

<menu-item name="3" class="i-xs-hide">
<a href="https://www.xiaoz.me/archives/13225" target = "_blank" rel = "nofollow"><Icon type="ios-card" /></Icon> 购买专业版</a>
</menu-item>

<menu-item name="3" class="i-xs-hide">
<a href="https://dwz.ovh/vwok9" title = "通过客户端上传" target = "_blank" rel = "nofollow"><Icon type="ios-laptop" /></Icon> 客户端</a>
</menu-item>

注意:

  1. 添加class="i-xs-hide"属性后则这个导航会在手机访问的情况下隐藏,如果不添加则不会隐藏,由于手机宽度有限,建议这部分仅一个菜单不隐藏,其余全部添加隐藏属性
  2. 如果您需要自定义字体图片,请参考:iView Icon 图标
管理维护

其它设置

举报地址设置

2.1.0版本开始,新增举报地址设置,举报地址需要自行设置第三方表单,比如Zoho表单、金数据、表单大师等。

设置后图片页面会出现一个举报地址,效果如下:

Zoho表单(推荐)

Zoho表单分国内版和海外版,请根据自己的用户区域选择,国内用户建议国内版,海外用户建议海外版。

国内版免费额度如下(能满足大部分个人用户需要):

注册后创建一个表单 - 按照下图构建一个表单。

继续打开设置 - 字段别名 - 别名设置为:

如果不设置字段别名,举报的时候没法自动填充邮箱地址和图片地址,需要用户手动,体验不好。

其它选项根据自己的需要和喜好设置即可。

然后点击“共享”获取表单永久链接,填写到“ImgURL后台 - 系统设置 - 站点设置 - 其它设置 - 填写举报地址”

其它表单

其它表单设置方法都差不多,大家根据自己的喜好设置即可。

安装

ImgURL Pro安装方法

安装

Docker安装ImgURL Pro(实验阶段)

通过Docker方式安装ImgURL Pro,请确保您已经安装了Docker以及docker-compose,建议通过命令行操作。(目前安装较为繁琐,后续的版本会镜像流程优化)

下载部署文件

下载后解压到您需要存放的目录,命令行解压命令为:

#解压
unzip main.zip
#进入目录
cd docker-imgurl

设置MySQL密码

编辑docker-compose.yaml这个文件,找到里面的这一行:

MYSQL_ROOT_PASSWORD: 95KeVtSp6MBC

95KeVtSp6MBC修改为您自己的MySQL密码。(注意:请务必修改这个密码)该密码是MySQL root密码,后续需要使用。

新建数据库

输入http://IP:8080/phpMyAdmin打开phpMyAdmin,会看到phpMyAdmin登录界面,如下截图。

点击“账户 - 新增用户账户”

按照下方截图填写数据库相关信息

最后点左下方的执行按钮进行创建数据库用户名和密码。

导入数据库

购买ImgURL Pro后,邮件里面会提供ImgURL Pro源码,找到里面的data/imgurl_simple.sql这个文件,可以先将这个文件保存到本地。

然后选中您刚刚新建的数据库(我这里数据库是imgurl),然后选择导入。

选择imgurl_simple.sql这个文件进行导入。

安装ImgURL Pro

将下载好的ImgURL Pro源码imgurl-pro-2.x.x.zip上传到部署文件的imgurl目录下,然后解压。

#进入目录
cd imgurl
#解压
unzip imgurl*.zip
#删除压缩包
rm -rf *.zip

接下来需要复制2个配置文件:

命令行操作方式为:

cp config.simple.php config.php
cp db.config.simple.php db.config.php

继续编辑config.php这个配置文件,填入您邮箱中的key

就行编辑db.config.php填写数据库信息,需要注意以下几个地方:

'hostname' => 'mysql57',
	'username' => 'imgurl',
	'password' => 'xxxx',
	'database' => 'imgurl',

将邮件里面的xxx.txt附件上传到imgurl/data目录下(注意:不要编辑和修改这个文件

在imgurl这个目录下,执行下面的命令解压补丁并覆盖:

#在imgurl这个目录下执行
unzip -o patch.zip

将您的域名解析到您服务器IP,然后访问http://你的域名:8880进行访问安装。