pixelfactory/psd-php

用于读取psd文件的库

1.0.0 2023-01-09 17:23 UTC

This package is not auto-updated.

Last update: 2024-10-02 00:05:49 UTC


README

PSD-PHP

Logo

用于读取psd文件的库

安装

composer require pixelfactory/psd-php

使用

通过传递文件路径创建'Psd'类的实例。

require_once '../vendor/autoload.php';

$psd = new \Psd\Psd('./image.psd');

然后你可以使用两种方式使用库,'简单'和'专业'
简单 - 方式适合那些不熟悉psd文件结构,只想获取必要信息的人
专业 - 方式可以由更有经验的开发者使用,以获取文件特定部分的访问权限

简单

获取文件大小

$psd = new \Psd\Psd('./image.psd');
$psdSimpleMethods = $psd->getShortcuts();

echo $psdSimpleMethods->getWidth();    // Print file width
echo $psdSimpleMethods->getHeight();   // Print file height

保存图像

$psd = new \Psd\Psd('./image.psd');
$psdSimpleMethods = $psd->getShortcuts();

var_dump($psdSimpleMethods->savePreview('./out.png')); // Print 'true' if file be saved

处理图层树

// TODO
[图层树] 从目录中移动
// TODO
[图层树] 获取图层信息
// TODO
[图层树] 保存图层图像
// TODO

专业

psd类与psd文件具有相同的结构。

1 - '颜色模式数据'没有方法,因为它被跳过并且库不对其进行处理。这不会影响大多数图像的工作,因为它们有"rgb"或"cmyk"颜色模式。此部分仅用于"索引"或"双色调"颜色模式。

头部数据

您可以调用'getHeader'方法来获取实现了HeaderInterface的类,它包含所有图像头部部分字段的方法。

示例

echo $psd->getHeader()->getMode();     // Return file mode (int)
echo $psd->getHeader()->modeName();    // Return file mode name
echo $psd->getHeader()->getChannels(); // Return file count channels

图像资源

图像资源部分存储附加信息。例如,指南等。
库正在处理资源

  • 指南(1032)
  • 图层组合(1065)
  • 分辨率信息(1005)

您可以在文档中找到您可以找到的资源完整列表。

要找到必要的资源,您需要调用getResources方法(此方法返回扩展自ResourcesInterface的类)。
然后,您可以使用资源名称或资源ID进行搜索。

示例。获取指南

/** @var \Psd\FileStructure\Resources\Resource\Guides\GuidesData[] $guides */
$guides = $psd
    ->getResources()
    ->getResourceById(\Psd\FileStructure\Resources\Resource\ResourceBase::RESOURCE_ID_GUIDES)
    ->getData();

foreach ($guides as $guide) {
    printf("%s - %s\n", $guide->getDirection(), $guide->getLocation()); // Result: 'vertical - 100'
}

图层和蒙版信息

// TODO

图像数据

此部分存储图像。您可以使用方法getExporter获取用于导出图像的类。
目前仅提供png类用于导出图像

/* @var Psd\Image\ImageExport\Exports\Png $exporter */
$exporter = $psd->getImage()->getExporter(\Psd\Image\ImageExport\ImageExport::EXPORT_FORMAT_PNG);

所有导出类实现了接口:ImageExportInterface
您可以将图像导出到Imagick类或保存它。

/** @var Imagick $image */
$image = $exporter->export();
/** @var bool $status */ 
$status = $exporter->save('./out.png');