这是官方的Kraken.IO PHP库,该库应非常快速地将我们的图像优化整合到其PHP项目中。 kraken.io图像优化器。
如果您使用的是作曲家,则可以在项目的composer.json文件中添加对kraken-io/kraken-php的依赖性。这是对版本1.2的依赖性的示例:
{
"require" : {
"kraken-io/kraken-php" : " ^1.2 "
}
}另外,您还可以在项目的根目录中执行以下命令:
composer require kraken-io/kraken-php
如果您已经有了git,那么下载kraken-php库的最简单方法与git命令:
git clone git://github.com/kraken-io/kraken-php.git /path/to/include/kraken
另外,您可以从GitHub下载PHP文件,并将其放置在PHP项目中:
https://github.com/kraken-io/kraken-php/archive/master.zip
首先,您需要注册kraken.io API并获取独特的API键和API秘密。您将在API凭据下找到两者。设置帐户后,您可以在应用程序中开始使用kraken.io api。
请记住 - 切勿链接到提供下载的优化图像。您必须先下载它们,然后在网站或应用程序中替换它们。由于安全原因,优化图像仅在我们的服务器上可用一小时可用。
您可以通过两种方式优化图像 - 通过提供要优化的图像的URL或将图像文件直接上传到Kraken.io API。
第一个选项(图像URL)非常适合已经在生产或Internet上任何其他位置的图像。第二个(直接上传)非常适合您的部署过程,构建脚本或用户上载未在线可用图像的即时处理。
Kraken.io为您提供了两个选择优化结果的选项。在wait选项设置的情况下,结果将在响应中立即返回。使用callback_url选项设置,结果将发布到您请求中指定的URL。
在对API的每个请求打开wait选项后,连接将保持打开状态,直到图像被优化为止。完成此操作后,您将使用包含优化结果的JSON对象立即响应。要使用此选项,只需在您的请求中设置"wait": true 。
要求:
{
"auth" : {
"api_key" : "your-api-key" ,
"api_secret" : "your-api-secret"
} ,
"url" : "http://image-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.kraken.io/d1aacd2a2280c2ffc7b4906a09f78f46/file.jpg"
}使用回调URL,HTTPS连接将立即终止,并将在响应主体中返回唯一的id 。优化之后,kraken.io将向您的请求中指定的callback_url发布消息。响应中的ID将反映您回调URL的结果中的ID。
我们建议请求Bin作为捕获初始测试优化结果的简便方法。
要求:
{
"auth" : {
"api_key" : "your-api-key" ,
"api_secret" : "your-api-secret"
} ,
"url" : "http://image-url.com/file.jpg" ,
"callback_url" : "http://awesome-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.kraken.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使用kraken.url()方法来优化图像。您将需要在图像中提供两个强制性参数url ,并wait或callback_url :
<?php
require_once ( " Kraken.php " );
$ kraken = new Kraken ( " your-api-key " , " your-api-secret " );
$ params = array (
" url " => " http://url-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.kraken.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图像将通过完整的alpha通道从24位转换为24位的8位。此过程称为RGBA格式的PNG量化,意味着图像中使用的颜色量将减少到256,同时维持有关Alpha透明度的所有信息。
对于有损的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 ,RGB rgb(255, 0, 0)或RGBA rgba(91, 126, 156, 0.7)中格式化。默认的背景颜色为白色。有关图像调整和裁剪的更多信息,请参见Kraken.io API参考
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对象存储容器中。只有几个其他参数,您的优化图像将立即将其推向外部存储。
强制性参数:
key - 您唯一的亚马逊“访问密钥ID”。secret - 您独特的亚马逊“秘密访问密钥”。bucket Amazon 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"强制性参数:
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"强制性参数:
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 );强制性参数:
user - 您的SoftLayer用户名。key - 您的SoftLayer API键。container - 软件帐户上的目标容器的名称。region - 您的容器所在的区域的缩写。这可以是以下一个: syd01 lon02 mon01 dal05 tok02 tor01 hkg02 mex01 par01 fra02 mil01 sjc01 ams01 sng01 mel01可选参数:
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://awesome-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
特此免费授予获得此软件副本和相关文档文件副本(“软件”)的任何人,以无限制处理该软件,包括无限制的使用权,复制,复制,修改,合并,合并,发布,分发,分发,分发,订婚,和/或允许软件的副本,并允许对以下条件提供以下条件,以下是以下条件。
上述版权通知和此许可通知应包含在软件的所有副本或大量部分中。
该软件是“原样”提供的,没有任何形式的明示或暗示保证,包括但不限于适销性,特定目的的适用性和非侵权的保证。在任何情况下,作者或版权持有人都不应对任何索赔,损害赔偿或其他责任责任,无论是在合同,侵权的诉讼中还是其他责任,是由软件,使用或与软件中的使用或其他交易有关的。