Kraken.io图像优化器API的PHP库
这是官方的Kraken.IO PHP库,该库应非常快速地将我们的图像优化整合到其PHP项目中。 kraken.io图像优化器。
- 安装
- 入门
- 下载图像
- 如何使用
- 等待和回调URL
- 等待选项
- 回调URL
- 验证
- 用法 – 图像URL
- 用法 – 图像上传
- 有损优化
- 图像调整大小
- WebP压缩
- 图像类型转换
- 保存元数据
- 外部存储
- 亚马逊S3
- Rackspace云文件
- Microsoft Azure
- SoftLayer对象存储
安装
作曲家
如果您使用的是作曲家,则可以在项目的composer.json文件中添加对kraken-io/kraken-php的依赖性。这是对版本1.2的依赖性的示例:
{
\"require\" : {
\"kraken-io/kraken-php\" : \" ^1.2 \"
}
}
另外,您还可以在项目的根目录中执行以下命令:
composer require kraken-io/kraken-php
git
如果您已经有了git,那么下载kraken-php库的最简单方法与git命令:
git clone git://github.com/kraken-io/kraken-php.git /path/to/include/kraken
手工
另外,您可以从GitHub下载PHP文件,并将其放置在PHP项目中:
https://gith*ub**.com/kraken-io/kraken-php/archive/master.zip
入门
首先,您需要注册kraken.io API并获取独特的API键和API秘密。您将在API凭据下找到两者。设置帐户后,您可以在应用程序中开始使用kraken.io api。
下载图像
请记住 – 切勿链接到提供下载的优化图像。您必须先下载它们,然后在网站或应用程序中替换它们。由于安全原因,优化图像仅在我们的服务器上可用一小时可用。
如何使用
您可以通过两种方式优化图像 – 通过提供要优化的图像的URL或将图像文件直接上传到Kraken.io API。
第一个选项(图像URL)非常适合已经在生产或Internet上任何其他位置的图像。第二个(直接上传)非常适合您的部署过程,构建脚本或用户上载未在线可用图像的即时处理。
等待和回调URL
Kraken.io为您提供了两个选择优化结果的选项。在wait选项设置的情况下,结果将在响应中立即返回。使用callback_url选项设置,结果将发布到您请求中指定的URL。
等待选项
在对API的每个请求打开wait选项后,连接将保持打开状态,直到图像被优化为止。完成此操作后,您将使用包含优化结果的JSON对象立即响应。要使用此选项,只需在您的请求中设置\"wait\": true 。
要求:
{ \"auth\" : { \"api_key\" : \"your-api-key\" , \"api_secret\" : \"your-api-secret\" } , \"url\" : \"http://ima*ge*-*url.com/file.jpg\" , \"wait\" : true }
回复
{ \"success\" : true , \"file_name\" : \"file.jpg\" , \"original_size\" : 324520 , \"kraked_size\" : 165358 , \"saved_bytes\" : 159162 , \"kraked_url\" : \"http://dl.*kra*k*en.io/d1aacd2a2280c2ffc7b4906a09f78f46/file.jpg\" }
回调URL
使用回调URL,HTTPS连接将立即终止,并将在响应主体中返回唯一的id 。优化之后,kraken.io将向您的请求中指定的callback_url发布消息。响应中的ID将反映您回调URL的结果中的ID。
我们建议请求Bin作为捕获初始测试优化结果的简便方法。
要求:
{ \"auth\" : { \"api_key\" : \"your-api-key\" , \"api_secret\" : \"your-api-secret\" } , \"url\" : \"http://ima*ge*-*url.com/file.jpg\" , \"callback_url\" : \"http://awe*some-**website.com/kraken_results\" }
回复:
{ \"id\" : \"18fede37617a787649c3f60b9f1f280d\" }
结果发布到回调URL:
{ \"id\" : \"18fede37617a787649c3f60b9f1f280d\" \"success\" : true , \"file_name\" : \"file.jpg\" , \"original_size\" : 324520 , \"kraked_size\" : 165358 , \"saved_bytes\" : 159162 , \"kraked_url\" : \"http://dl.*krak**en.io/18fede37617a787649c3f60b9f1f280d/file.jpg\" }
验证
第一步是在创建新的kraken.io实例时提供唯一的API密钥和API秘密来验证Kraken.io API:
<?php require_once ( \" Kraken.php \" ); $ kraken = new Kraken ( \" your-api-key \" , \" your-api-secret \" );
用法 – 图像URL
通过提供图像URL使用kraken.url()方法来优化图像。您将需要在图像中提供两个强制性参数url ,并wait或callback_url :
<?php require_once ( \" Kraken.php \" ); $ kraken = new Kraken ( \" your-api-key \" , \" your-api-secret \" ); $ params = array ( \" url \" => \" http://ur*l*-to-*image.com/file.jpg \" , \" wait \" => true ); $ data = $ kraken -> url ( $ params );
根据data阵列中选择的响应选项(等待或回调URL),您将找到包含success属性,文件名,原始文件大小,杂项文件大小,节省量和优化图像URL的优化ID或优化结果:
array ( 6 ) { \' success \' => bool(true) \' file_name \' => string( 8 ) \" file.jpg \" \' original_size \' => int( 62422 ) \' kraked_size \' => int( 52783 ) \' saved_bytes \' => int( 9639 ) \' kraked_url \' => string( 65 ) \" http://dl.*kra*k*en.io/d1aacd2a2280c2ffc7b4906a09f78f46/file.jpg \" }
用法 – 图像上传
如果要将图像直接上传到kraken.io api,请使用kraken->upload()方法。您将需要在数组 – file中提供两个强制性参数,这是文件的绝对路径,然后wait或callback_url 。
在$data数组中,您将找到与上面的url选项相同的优化属性。
<?php require_once ( \" Kraken.php \" ); $ kraken = new Kraken ( \" your-api-key \" , \" your-api-secret \" ); $ params = array ( \" file \" => \" /path/to/image/file.jpg \" , \" wait \" => true ); $ data = $ kraken -> upload ( $ params );
有损优化
当您决定仅牺牲少量的图像质量(通常对人眼不知所措)时,您将能够节省多达90%的初始文件重量。损失优化将为您提供出色的结果,而图像质量损失的一小部分。
要使用有损优化,只需在您的请求中设置\"lossy\" => true :
<?php require_once ( \" Kraken.php \" ); $ kraken = new Kraken ( \" your-api-key \" , \" your-api-secret \" ); $ params = array ( \" file \" => \" /path/to/image/file.jpg \" , \" wait \" => true , \" lossy \" => true ); $ data = $ kraken -> upload ( $ params );
PNG图像
PNG图像将通过完整的alpha通道从24位转换为24位的8位。此过程称为RGBA格式的PNG量化,意味着图像中使用的颜色量将减少到256,同时维持有关Alpha透明度的所有信息。
JPEG图像
对于有损的JPEG优化,Kraken.io将生成具有不同质量设置的输入图像的多个副本。然后,它将明智地选择具有最佳质量的档案化评分的产品。这样可以确保您的JPEG图像的尺寸最小,而无需人工选择最佳图像。
图像调整大小
图像调整选项非常适合在应用程序中创建缩略图或预览图像。 Kraken.io首先要调整给定图像大小,然后使用其大量优化算法对其进行优化。 resize选项需要一些参数,例如所需的width和/或height以及强制性strategy属性。例如:
<?php require_once ( \" Kraken.php \" ); $ kraken = new Kraken ( \" your-api-key \" , \" your-api-secret \" ); $ params = array ( \" file \" => \" /path/to/image/file.jpg \" , \" wait \" => true , \" resize \" => array ( \" width \" => 100 , \" height \" => 75 , \" strategy \" => \" crop \" ) ); $ data = $ kraken -> upload ( $ params );
strategy属性可以具有以下值之一:
-
exact– 通过精确的宽度/高度调整大小。不会保持纵横比。 -
portrait– 将设置精确的宽度,将根据纵横比调整高度。 -
landscape– 将设置精确的高度,宽度将根据纵横比进行调整。 -
auto– 将根据纵横比为给定的图像选择最佳策略(肖像或景观)。 -
fit此选项将裁剪和调整图像大小以适合所需的宽度和高度。 -
square此策略将首先通过较短的尺寸裁剪图像,以使其成为正方形,然后将其调整到指定的大小。 -
crop– 此选项将您的图像裁剪成您指定的确切大小而不会失真。 -
fill– 此策略使您可以调整图像大小以在保留纵横比的同时(就像自动策略一样)。可选的背景属性允许您指定一种颜色,该颜色将用于填充先前指定的边界的未使用部分。背景属性可以在十六进制符号#f60或#ff6600,RGBrgb(255, 0, 0)或RGBArgba(91, 126, 156, 0.7)中格式化。默认的背景颜色为白色。
有关图像调整和裁剪的更多信息,请参见Kraken.io API参考
WebP压缩
WebP是Google在2010年引入的一种新图像格式,可支持有损和无损压缩。根据Google的说法,与PNG相比,WebP无损图像的尺寸小26% ,与JPEG图像相比,WebP损耗的图像的尺寸小25-34% 。
要将您的png或JPEG文件重新压缩到WebP格式中,只需设置\"webp\": true标志。您还可以选择设置\"lossy\": true标志来利用WebP的有损压缩:
<?php require_once ( \" Kraken.php \" ); $ kraken = new Kraken ( \" your-api-key \" , \" your-api-secret \" ); $ params = array ( \" file \" => \" /path/to/image/file.jpg \" , \" wait \" => true , \" webp \" => true , \" lossy \" => true ); $ data = $ kraken -> upload ( $ params );
图像类型转换
Kraken.io API允许您轻松地将不同的图像从一种类型/格式转换为另一种类型/格式。例如,如果您想将透明的PNG文件转换为带有灰色背景的JPEG,请访问您。
为了在不同的图像类型之间转换,您需要在请求JSON中添加额外的convert对象。该对象采用三个属性:
- 您要使用的
format指定要将图像转换为的文件类型。 - 可选的
background属性,您可以在其中从透明文件格式(例如PNG和GIF)转换为完全不透明格式(例如JPEG)时指定背景颜色。 - 可选的
keep_extension属性,可让您保持原始文件扩展名,无论输出图像格式如何。
强制性参数:
-
format– 您希望将图像转换为的图像格式。这可以接受以下值之一:jpeg,png或gif。
可选参数:
-
background– 从PNG或GIF(例如JPEG)转换为完全不透明格式的透明文件格式时的背景图像。背景属性可以通过十六进制符号\"#f60\"或\"#ff6600\",RGB\"rgb(255, 0, 0)\"或RGBA\"rgba(91, 126, 156, 0.7)\"。默认的背景颜色为白色。 -
keep_extension指导kraken.io api的布尔值(true或false)是否应将原始扩展名保留在输出文件名中。例如,当将“ image.jpg”转换为png格式时,此标志已打开输出图像名称,即使图像已转换为png,也仍将是“ image.jpg”。默认值是false,含义正确的扩展名将始终设置。
保存元数据
默认情况下,kraken.io api将剥离图像中发现的所有元数据,以使图像文件尽可能小,并且以有损和无损模式。 EXIF,XMP和IPTC标签,颜色配置文件信息等条目将完全剥离。
但是,在某些情况下,您可能想保留图像中包含的某些元信息,例如版权通知或geotags。为了保留最重要的meta条目,使用以下一个或多个值向您的请求中添加了一个额外的preserve_meta数组:
{ \"preserve_meta\" : [ \"date\" , \"copyright\" , \"geotag\" , \"orientation\" , \"profile\" ] }
-
profile– 将保留ICC颜色配置文件。 ICC颜色配置文件信息为图像增加了不必要的膨胀。但是,在极罕见的情况下,可以保留此信息可能会导致所得文件的亮度和/或饱和度变化。 -
date– 将保留图像创建日期。 -
copyright– 将保留版权条目。 -
geotag将保留特定于位置的信息。 -
orientation– 将保留方向(旋转)标记。
示例集成:
<?php require_once ( \" Kraken.php \" ); $ kraken = new Kraken ( \" your-api-key \" , \" your-api-secret \" ); $ params = array ( \" file \" => \" /path/to/image/file.jpg \" , \" wait \" => true , \" preserve_meta \" => array ( \" profile \" , \" geotag \" ) ); $ data = $ kraken -> upload ( $ params );
外部存储
Kraken.io API允许您将优化的图像直接存储在S3存储桶,云文件容器,Azure容器或SoftLayer对象存储容器中。只有几个其他参数,您的优化图像将立即将其推向外部存储。
亚马逊S3
强制性参数:
-
key– 您唯一的亚马逊“访问密钥ID”。 -
secret– 您独特的亚马逊“秘密访问密钥”。 -
bucketAmazon S3帐户上的目标容器的名称。 -
region– 您的S3存储桶所在的区域的名称。如果区域与默认一个(us-east-1)不同,则该字段是必须的。 S3区域的完整列表可以在此处找到。
可选参数:
-
path– S3存储桶中的目标路径(例如\"images/layout/header.jpg\")。默认为root\"/\"。 -
acl目标对象的权限。这可以是\"public_read\"或\"private\"。默认为\"public_read\"。
上述参数必须以s3_store密钥传递:
<?php require_once ( \" Kraken.php \" ); $ kraken = new Kraken ( \" your-api-key \" , \" your-api-secret \" ); $ params = array ( \" file \" => \" /path/to/image/file.jpg \" , \" wait \" => true , \" s3_store \" => array ( \" key \" => \" your-amazon-access-key \" , \" secret \" => \" your-amazon-secret-key \" , \" bucket \" => \" destination-bucket \" ) ); $ data = $ kraken -> upload ( $ params );
$data阵列将包含一个kraked_url键,该密钥直接指向您的Amazon S3帐户中的优化文件:
\" kraked_url \" => \"http: //s3.amazonaws.com/YOUR_CONTAINER/path/to/file.jpg\"
Rackspace云文件
强制性参数:
-
user– 您的Rackspace用户名。 -
key– 您唯一的云文件API键。 -
container– 云文件帐户上目标容器的名称。
可选参数:
-
path– 容器中的目标路径(例如\"images/layout/header.jpg\")。默认为root\"/\"。 -
ssl指导kraken.io api从rackspace cloudfiles获取SSL或非SSL URL的布尔值(true或false)。默认为false,含义非SSL URL将返回。
上述参数必须以cf_store密钥传递:
<?php require_once ( \" Kraken.php \" ); $ kraken = new Kraken ( \" your-api-key \" , \" your-api-secret \" ); $ params = array ( \" file \" => \" /path/to/image/file.jpg \" , \" wait \" => true , \" cf_store \" => array ( \" user \" => \" your-rackspace-username \" , \" key \" => \" your-rackspace-api-key \" , \" container \" => \" destination-container \" , \" ssl \" => true ) ); $ data = $ kraken -> upload ( $ params );
如果您的容器是启用了CDN的,那么优化结果将包含kraked_url ,它直接指向云文件帐户中优化的文件位置,例如:
kraked_url => \"http: //e9ffc04970a269a54eeb-cc00fdd2d4f11dffd931005c9e8de53a.r2.cf1.rackcdn.com/path/to/file.jpg\"
如果您的容器不符合CDN的优化文件,则无论如何将存储在您的CloudFiles帐户中,但是kraked_url将指向Kraken.IO API存储中的优化映像URL:
kraked_url => \"http: //dl.kraken.io/ecdfa5c55d5668b1b5fe9e420554c4ee/file.jpg\"
Microsoft Azure
强制性参数:
-
account– 您的Azure存储帐户。 -
key– 您唯一的Azure存储访问密钥。 -
container– Azure帐户上的目标容器的名称。
可选参数:
-
path– 容器中的目标路径(例如\"images/layout/header.jpg\")。默认为root\"/\"。
上述参数必须以azure_store密钥传递:
<?php require_once ( \" Kraken.php \" ); $ kraken = new Kraken ( \" your-api-key \" , \" your-api-secret \" ); $ params = array ( \" file \" => \" /path/to/image/file.jpg \" , \" wait \" => true , \" azure_store \" => array ( \" account \" => \" your-azure-account \" , \" key \" => \" your-azure-storage-access-key \" , \" container \" => \" destination-container \" ) ); $ data = $ kraken -> upload ( $ params );
SoftLayer对象存储
强制性参数:
-
user– 您的SoftLayer用户名。 -
key– 您的SoftLayer API键。 -
container– 软件帐户上的目标容器的名称。 -
region– 您的容器所在的区域的缩写。这可以是以下一个:syd01lon02mon01dal05tok02tor01hkg02mex01par01fra02mil01sjc01ams01sng01mel01
可选参数:
-
path– 容器中的目标路径(例如“图像/布局/header.jpg”)。默认为root“/”。 -
cdn_url布尔值是true或false指示kraken.io api返回优化文件的公共cdn URL。默认为false含义非CDN URL将返回。
以上参数必须在sl_store对象中传递:
<?php require_once ( \" Kraken.php \" ); $ kraken = new Kraken ( \" your-api-key \" , \" your-api-secret \" ); // Minimal request, providing only the mandatory parameters */ $ params = array ( \" file \" => \" /path/to/image/file.jpg \" , \" wait \" => true , \" sl_store \" => array ( \" user \" => \" your-softlayer-account \" , \" key \" => \" your-softlayer-key \" , \" container \" => \" destination-container \" , \" region \" => \" your-container-location \" ) ); $ data = $ kraken -> upload ( $ params );
在下面,您可以找到一个完整的JSON请求的示例,该请求使用sl_store将优化的图像推入SoftLayer对象存储容器。我们将使用URL选项将API用以进行优化的图像来馈送API:
<?php require_once ( \" Kraken.php \" ); $ kraken = new Kraken ( \" your-api-key \" , \" your-api-secret \" ); $ params = array ( \" url \" => \" http://a*w*esom*e-website.com/images/header.jpg \" , \" wait \" => true , \" sl_store \" => array ( \" user \" => \" your-softlayer-account \" , \" key \" => \" your-softlayer-key \" , \" container \" => \" destination-container \" , \" region \" => \" your-container-location \" , \" cdn_url \" => true , \" path \" => \" images/layout/header.jpg \" ) ); $ data = $ kraken -> upload ( $ params );
如果您的SoftLayer容器已启用CDN,并且您已传递了\"cdn_url\": true参数,优化结果将包含kraked_url ,它将直接指向SoftLayer cdn中优化的文件位置,例如:
kraked_url => \"http: //1c231.http.fra02.cdn.softlayer.net/images/layout/header.jpg\"
如果您的容器不启用CDN的kraked_url ,将指向Kraken.io API中的优化图像URL:
kraked_url => \"http: //dl.kraken.io/api/ecdfa5c55d5668b1b5fe9e420554c4ee/header.jpg\"
许可证 – 麻省理工学院
版权(c)2013-2015 nekkra ug
特此免费授予获得此软件副本和相关文档文件副本(“软件”)的任何人,以无限制处理该软件,包括无限制的使用权,复制,复制,修改,合并,合并,发布,分发,分发,分发,订婚,和/或允许软件的副本,并允许对以下条件提供以下条件,以下是以下条件。
上述版权通知和此许可通知应包含在软件的所有副本或大量部分中。
该软件是“原样”提供的,没有任何形式的明示或暗示保证,包括但不限于适销性,特定目的的适用性和非侵权的保证。在任何情况下,作者或版权持有人都不应对任何索赔,损害赔偿或其他责任责任,无论是在合同,侵权的诉讼中还是其他责任,是由软件,使用或与软件中的使用或其他交易有关的。
