Class SmartObjectLayer

SmartObjectLayer class

PSD ファイルに埋め込まれた、または外部ファイルにリンクされたスマート オブジェクトを含む SmartObjectLayer クラスを定義します。 スマート オブジェクトを使用すると、次のことができます。変換は元のデータに影響を与えないため、元の画像データや品質を失うことなく、レイヤー を拡大縮小、回転、傾斜、ゆがめ、透視変換、またはワープできます。 非破壊フィルタリングを実行します。スマート オブジェクトに適用されたフィルターはいつでも編集できます。 1 つのスマート オブジェクトを編集し、リンクされたすべてのインスタンスを自動的に更新します。 スマート オブジェクト レイヤーにリンクまたはリンク解除されたレイヤー マスクを適用します。後で最終バージョンに置き換える解像度のプレースホルダー画像. Adobe Photoshop では、画像の内容を PSD ドキュメントに埋め込むことができます. 詳細はこちら:https://helpx.adobe.com/photoshop/using/create-smart-objects.html スマート オブジェクトが埋め込まれたレイヤーには、スマート オブジェクト プロパティを持つ配置 (PlLd) リソースと SoLd リソースが含まれます。 filename およびその他のパラメーター (バイト配列として元の形式で埋め込まれたファイルの内容を含む).

public class SmartObjectLayer : Layer

プロパティ

名前説明
AutoAdjustPalette { get; set; }パレットを自動調整するかどうかを示す値を取得または設定します。
virtual BackgroundColor { get; set; }背景色の値を取得または設定します。
override BitsPerPixel { get; }ピクセルあたりの画像ビット数を取得します。
BlendingOptions { get; }ブレンド オプションを取得します。
virtual BlendModeKey { get; set; }ブレンド モード キーを取得または設定します。
BlendModeSignature { get; }ブレンド モード シグネチャを取得します。
Bottom { get; set; }最下層の位置を取得または設定します。
Bounds { get; }画像の境界を取得します。
BufferSizeHint { get; set; }すべての内部バッファーの最大許容サイズが定義されているバッファー サイズのヒントを取得または設定します。
ChannelInformation { get; set; }チャネル情報を取得または設定します。
ChannelsCount { get; }レイヤーのチャンネル数を取得します。
Clipping { get; set; }レイヤーのクリッピングを取得または設定します。 0 = ベース、1 = 非ベース.
Container { get; }を取得しますImageコンテナ.
Contents { get; set; }スマート オブジェクト レイヤーのコンテンツを取得または設定します。 埋め込まれたスマート オブジェクトのコンテンツは、埋め込まれた生の画像ファイルです。Dataおよびそのプロパティ. リンクされたスマート オブジェクトのコンテンツは、リンクされた画像ファイルが利用可能な場合、そのファイルの生のコンテンツであり、そのプロパティは次のとおりです。LiFeDataSource . Adobe� Photoshop� � Graphics Library からの読み込みはサポートしていません。IsLibraryLink true. 通常のリンク ファイルの場合、最初はRelativePathソースイメージパスに対して相対的に ファイルを探すSourceImagePath, 利用できない場合は確認しますFullPath, そうでない場合は、画像と同じディレクトリでリンク ファイルを探します。SourceImagePath .
ContentsBounds { get; set; }スマート オブジェクト コンテンツの境界を取得または設定します。
ContentsSource { get; set; }スマート オブジェクト コンテンツのソースを取得または設定します。
ContentType { get; }スマート オブジェクト レイヤー コンテンツのタイプを取得します。 埋め込まれたスマート オブジェクト コンテンツは、埋め込まれた生の画像ファイルです。Data . リンクされたスマート オブジェクトのコンテンツは、リンクされた画像ファイルが利用可能な場合、その生のコンテンツです。LiFeDataSource . Adobe� Photoshop� � Graphics Library からの読み込みはサポートしていません。IsLibraryLink true. 通常のリンク ファイルの場合、最初はRelativePathソースイメージパスに対して相対的に ファイルを探すSourceImagePath, 利用できない場合は確認しますFullPath, そうでない場合は、画像と同じディレクトリでリンク ファイルを探します。SourceImagePath .
DataStreamContainer { get; }オブジェクトのデータ ストリームを取得します。
DisplayName { get; set; }レイヤーの表示名を取得または設定します。
Disposed { get; }このインスタンスが破棄されているかどうかを示す値を取得します。
ExtraLength { get; }レイヤーの付加情報の長さをバイト単位で取得します.
virtual FileFormat { get; }ファイル形式の値を取得
Filler { get; set; }レイヤー フィラーを取得または設定します。
FillOpacity { get; set; }塗りつぶしの不透明度を取得または設定します。
Flags { get; set; }レイヤー フラグを取得または設定します。 ビット 0 = 透明度が保護されています。 ビット 1 = 表示されています。 ビット 2 = 廃止されています。 ビット 3 = Photoshop 5.0 以降では 1 であり、ビット 4 に有用な情報があるかどうかを示します。 ビット 4 =ドキュメントの外観に関係のないピクセル データ.
override HasAlpha { get; }このインスタンスがアルファを持っているかどうかを示す値を取得します.
virtual HasBackgroundColor { get; set; }画像に背景色があるかどうかを示す値を取得または設定します.
virtual HasTransparentColor { get; set; }画像に透明色があるかどうかを示す値を取得します.
override Height { get; }画像の高さを取得します.
virtual HorizontalResolution { get; set; }水平方向の解像度を取得または設定します (1 インチあたりのピクセル数)。RasterImage .
virtual ImageOpacity { get; }この画像の不透明度を取得します。
InterruptMonitor { get; set; }割り込みモニターを取得または設定します。
override IsCached { get; }画像データが現在キャッシュされているかどうかを示す値を取得します。
IsRawDataAvailable { get; }生データの読み込みが可能かどうかを示す値を取得します。
IsVisible { get; set; }レイヤーが可視かどうかを示す値を取得または設定します
virtual IsVisibleInGroup { get; }このインスタンスがグループ内で可視かどうかを示す値を取得します (レイヤーがグループ内にない場合は、ルート グループを意味します)。
LayerBlendingRangesData { get; set; }レイヤーのブレンド範囲データを取得または設定します.
LayerCreationDateTime { get; set; }レイヤーの作成日時を取得または設定します。
LayerLock { get; set; }レイヤー ロックを取得または設定します。 フラグ LayerFlags.TransparencyProtected が設定されている場合、レイヤー ロック フラグによって上書きされることに注意してください。
LayerMaskData { get; set; }レイヤー マスク データを取得または設定します。
LayerOptions { get; }レイヤ オプションを取得します。
Left { get; set; }左レイヤーの位置を取得または設定します.
Length { get; }レイヤー全体の長さをバイト単位で取得します。
Name { get; set; }レイヤー名を取得または設定します。
Opacity { get; set; }レイヤーの不透明度を取得または設定します。 0 = 透明、255 = 不透明.
Palette { get; set; }カラー パレットを取得または設定します。ピクセルが直接表現されている場合、カラー パレットは使用されません。
virtual PremultiplyComponents { get; set; }画像コンポーネントをあらかじめ乗算する必要があるかどうかを示す値を取得または設定します.
RawCustomColorConverter { get; set; }カスタム カラー コンバーターを取得または設定します
virtual RawDataFormat { get; }生データ形式を取得します。
RawDataSettings { get; }現在の生データ設定を取得します。これらの設定を使用する場合、データは変換されずに読み込まれることに注意してください。
RawFallbackIndex { get; set; }パレット インデックスが範囲外の場合に使用するフォールバック インデックスを取得または設定します
RawIndexedColorConverter { get; set; }インデックス付きカラー コンバーターを取得または設定します
virtual RawLineSize { get; }生の行サイズをバイト単位で取得します。
Resources { get; set; }レイヤー リソースを取得または設定します。
Right { get; set; }正しいレイヤー位置を取得または設定します。
SheetColorHighlight { get; set; }レイヤーのリストで装飾シートの色のハイライトを取得または設定します
Size { get; }画像サイズを取得します。
SmartFilters { get; }スマート フィルターを取得します。
SmartObjectProvider { get; }スマート オブジェクト プロバイダーを取得します。
Top { get; set; }最上層の位置を取得または設定します。
virtual TransparentColor { get; set; }画像の透明色を取得します.
virtual UpdateXmpData { get; set; }XMP メタデータを更新するかどうかを示す値を取得または設定します。
virtual UseRawData { get; set; }生データの読み込みが可能な場合に、生データの読み込みを使用するかどうかを示す値を取得または設定します。
virtual VerticalResolution { get; set; }この解像度の垂直方向の解像度 (1 インチあたりのピクセル数) を取得または設定しますRasterImage .
override Width { get; }画像の幅を取得します.
virtual XmpData { get; set; }XMP メタデータを取得または設定します。

メソッド

名前説明
AddLayerMask(LayerMaskData)マスクを現在のレイヤーに追加します。
override AdjustBrightness(int)画像の明るさを調整します。
override AdjustContrast(float)画像のコントラスト
override AdjustGamma(float)画像のガンマ補正.
override AdjustGamma(float, float, float)画像のガンマ補正.
override BinarizeBradley(double)インテグラル イメージしきい値処理を使用した Bradley の適応しきい値処理アルゴリズムを使用したイメージの 2 値化
override BinarizeBradley(double, int)インテグラル イメージしきい値処理を使用した Bradley の適応しきい値処理アルゴリズムを使用したイメージの 2 値化
override BinarizeFixed(byte)事前定義されたしきい値による画像の 2 値化
override BinarizeOtsu()大津閾値処理による画像の二値化
override CacheData()データをキャッシュし、基盤から追加のデータ読み込みが実行されないようにしますDataStreamContainer .
CanSave(ImageOptionsBase)渡された保存オプションで表される指定されたファイル形式で画像を保存できるかどうかを決定します。
ConvertToLinked(string)この埋め込まれたスマート オブジェクトをリンクされたスマート オブジェクトに変換します。
override Crop(Rectangle)画像をトリミングしています。
virtual Crop(int, int, int, int)シフトで画像をトリミングします。
Dispose()現在のインスタンスを破棄します。
Dither(DitheringMethod, int)現在の画像でディザリングを実行します。
override Dither(DitheringMethod, int, IColorPalette)現在の画像でディザリングを実行します。
DrawImage(Point, RasterImage)レイヤーに画像を描画します。
DuplicateLayer()これをコピーして、新しいスマート オブジェクト レイヤーを作成します。NewSmartObjectViaCopymethod.
EmbedLinked()リンクされたスマートオブジェクトをこのレイヤーに埋め込みます.
ExportContents(string)埋め込みまたはリンクされたコンテンツをファイルにエクスポートします。
virtual Filter(Rectangle, FilterOptionsBase)指定された四角形をフィルタリングします。
GetArgb32Pixel(int, int)画像の 32 ビット ARGB ピクセルを取得します。
GetDefaultArgb32Pixels(Rectangle)デフォルトの 32 ビット ARGB ピクセル配列を取得します。
virtual GetDefaultOptions(object[])デフォルトのオプションを取得します。
GetDefaultPixels(Rectangle, IPartialArgb32PixelLoader)部分ピクセル ローダーを使用してデフォルトのピクセル配列を取得します。
GetDefaultRawData(Rectangle, RawDataSettings)デフォルトの生データ配列を取得します。
GetDefaultRawData(Rectangle, IPartialRawDataLoader, RawDataSettings)部分ピクセル ローダーを使用して、デフォルトの生データ配列を取得します。
override GetHashCode()このインスタンスのハッシュ コードを返します。
virtual GetModifyDate(bool)リソース イメージが最後に変更された日時を取得します。
virtual GetOriginalOptions()元のファイル設定に基づいてオプションを取得します. これは、元の画像のビット深度やその他のパラメーターを変更しないで保持するのに役立ちます. たとえば、1 ビットあたり 1 ビットの白黒 PNG 画像をロードし、 the を使用して保存しますSave これを回避し、1 ピクセルあたり 1 ビットの PNG 画像を保存するには、このメソッドを使用して対応する保存オプションを取得し、 をSave 番目のパラメーターとしてのメソッド。
GetPixel(int, int)画像ピクセルを取得します。
GetSkewAngle()傾斜角度を取得します。 このメソッドは、スキャン時の傾斜角度を決定するために、スキャンされたテキスト ドキュメントに適用されます。
override Grayscale()グレースケール表現への画像の変換
LoadArgb32Pixels(Rectangle)32 ビット ARGB ピクセルをロードします。
LoadArgb64Pixels(Rectangle)64 ビット ARGB ピクセルをロードします。
LoadCmyk32Pixels(Rectangle)ピクセルを CMYK 形式で読み込みます。
LoadContents(LoadOptions)スマート オブジェクト レイヤーの埋め込みまたはリンクされた画像コンテンツを取得します。
LoadPartialArgb32Pixels(Rectangle, IPartialArgb32PixelLoader)32 ビット ARGB ピクセルを部分的にパックで読み込みます。
LoadPartialPixels(Rectangle, IPartialPixelLoader)パック単位で部分的にピクセルを読み込みます。
LoadPixels(Rectangle)ピクセルを読み込みます。
LoadRawData(Rectangle, RawDataSettings, IPartialRawDataLoader)生データを読み込みます。
LoadRawData(Rectangle, Rectangle, RawDataSettings, IPartialRawDataLoader)生データを読み込みます。
virtual MergeLayerTo(Layer)レイヤーを指定したレイヤーに結合します
NewSmartObjectViaCopy()これをコピーして新しいスマート オブジェクト レイヤーを作成します. Adobe Photoshop の「レイヤー -> スマート オブジェクト -> コピーによる新しいスマート オブジェクト」機能を再現します. もコピーされます。 埋め込み画像を共有する場合は、DuplicateLayermethod.
NormalizeAngle()角度を正規化します。 この方法は、スキャンされたテキスト ドキュメントに適用され、スキャンの歪みを取り除きます。 この方法は、GetSkewAngleRotateメソッド.
virtual NormalizeAngle(bool, Color)角度を正規化します。 この方法は、スキャンされたテキスト ドキュメントに適用され、スキャンの歪みを取り除きます。 この方法は、GetSkewAngleRotateメソッド.
ReadArgb32ScanLine(int)指定されたスキャン ライン インデックスでスキャン ライン全体を読み取ります。
ReadScanLine(int)指定されたスキャン ライン インデックスでスキャン ライン全体を読み取ります。
RelinkToFile(string)リンクされたスマート オブジェクトを新しいファイルに再リンクします。 後で UpdateModifiedContent メソッドを呼び出す必要はありません。
ReplaceColor(Color, byte, Color)ある色を別の許容差で置き換え、元のアルファ値を保持して滑らかなエッジを保存します。
virtual ReplaceColor(int, byte, int)ある色を別の許容差で置き換え、元のアルファ値を保持して滑らかなエッジを保存します。
ReplaceContents(Image)スマート オブジェクト レイヤーに埋め込まれたスマート オブジェクトのコンテンツを置き換えます。
ReplaceContents(string)内容をファイルに置き換えます。 後で UpdateModifiedContent メソッドを呼び出す必要はありません。
ReplaceContents(Image, ResolutionSetting)スマート オブジェクト レイヤーに埋め込まれたスマート オブジェクトのコンテンツを置き換えます。
ReplaceContents(string, ResolutionSetting)内容をファイルに置き換えます。 後で UpdateModifiedContent メソッドを呼び出す必要はありません。
ReplaceNonTransparentColors(Color)すべての不透明な色を新しい色に置き換え、元のアルファ値を維持して滑らかなエッジを保存します。
virtual ReplaceNonTransparentColors(int)すべての不透明な色を新しい色に置き換え、元のアルファ値を維持して滑らかなエッジを保存します。
Resize(int, int)画像のサイズを変更します。デフォルトLeftTopToLeftTop使用されています.
override Resize(int, int, ImageResizeSettings)画像のサイズを変更します。
override Resize(int, int, ResizeType)画像のサイズを変更します。
ResizeHeightProportionally(int)高さを比例してサイズ変更します。
virtual ResizeHeightProportionally(int, ImageResizeSettings)高さを比例してサイズ変更します。
virtual ResizeHeightProportionally(int, ResizeType)高さを比例してサイズ変更します。
ResizeWidthProportionally(int)幅を比例してサイズ変更します。
virtual ResizeWidthProportionally(int, ImageResizeSettings)幅を比例してサイズ変更します。
virtual ResizeWidthProportionally(int, ResizeType)幅を比例してサイズ変更します。
virtual Rotate(float)画像を中心に回転します。
override Rotate(float, bool, Color)画像を中心に回転します。
override RotateFlip(RotateFlipType)画像を回転、反転、または回転して反転します。
Save()画像データを基になるストリームに保存します。
override Save(Stream)オブジェクトのデータを指定されたストリームに保存します。
Save(string)オブジェクトのデータを指定されたファイルの場所に保存します。
Save(Stream, ImageOptionsBase)保存オプションに従って、指定されたファイル形式でイメージのデータを指定されたストリームに保存します。
override Save(string, bool)オブジェクトのデータを指定されたファイルの場所に保存します。
override Save(string, ImageOptionsBase)保存オプションに従って、指定されたファイル形式でオブジェクトのデータを指定されたファイルの場所に保存します。
override Save(Stream, ImageOptionsBase, Rectangle)保存オプションに従って、指定されたファイル形式でイメージのデータを指定されたストリームに保存します。
override Save(string, ImageOptionsBase, Rectangle)保存オプションに従って、指定されたファイル形式でオブジェクトのデータを指定されたファイルの場所に保存します。
SaveArgb32Pixels(Rectangle, int[])32 ビット ARGB ピクセルを保存します。
SaveCmyk32Pixels(Rectangle, int[])ピクセルを保存します。
SavePixels(Rectangle, Color[])ピクセルを保存します。
SaveRawData(byte[], int, Rectangle, RawDataSettings)生データを保存します。
SetArgb32Pixel(int, int, int)指定された位置に画像の 32 ビット ARGB ピクセルを設定します。
override SetPalette(IColorPalette, bool)画像パレットを設定します。
SetPixel(int, int, Color)指定された位置にイメージ ピクセルを設定します。
virtual SetResolution(double, double)この解像度を設定しますRasterImage .
ShallowCopy()現在のレイヤーの浅いコピーを作成します. してくださいhttps://msdn.microsoft.com/ru-ru/library/system.object.memberwiseclone(v=vs.110).aspx説明用.
virtual ToBitmap()ラスター イメージをビットマップに変換します。
UpdateModifiedContent()変更されたコンテンツでスマート オブジェクト レイヤーの画像キャッシュを更新します。
WriteArgb32ScanLine(int, int[])スキャン ライン全体を指定されたスキャン ライン インデックスに書き込みます。
WriteScanLine(int, Color[])スキャン ライン全体を指定されたスキャン ライン インデックスに書き込みます。

次のコードは、埋め込みスマート オブジェクトのサポートを示しています。

[C#]

void AssertAreEqual(object actual, object expected)
{
    if (!object.Equals(actual, expected))
    {
        throw new FormatException(string.Format("Actual value {0} are not equal to expected {1}.", actual, expected));
    }
}

// この例では、PSD ファイルのスマート オブジェクト レイヤーを変更し、スマート オブジェクトの元の埋め込みコンテンツをエクスポート/更新する方法を示します。
const int left = 0;
const int top = 0;
const int right = 0xb;
const int bottom = 0x10;
FileFormat[] formats = new[]
{
    FileFormat.Png, FileFormat.Psd, FileFormat.Bmp, FileFormat.Jpeg, FileFormat.Gif, FileFormat.Tiff, FileFormat.Jpeg2000
};
foreach (FileFormat format in formats)
{
    string formatString = format.ToString().ToLowerInvariant();
    string formatExt = format == FileFormat.Jpeg2000 ? "jpf" : formatString;
    string fileName = "r-embedded-" + formatString;
    string sourceFilePath = fileName + ".psd";
    string pngOutputPath = fileName + "_output.png";
    string psdOutputPath = fileName + "_output.psd";
    string png2OutputPath = fileName + "_updated.png";
    string psd2OutputPath = fileName + "_updated.psd";
    string exportPath = fileName + "_export." + formatExt;
    using (PsdImage image = (PsdImage)Image.Load(sourceFilePath))
    {
        var smartObjectLayer = (SmartObjectLayer)image.Layers[0];

        AssertAreEqual(left, smartObjectLayer.ContentsBounds.Left);
        AssertAreEqual(top, smartObjectLayer.ContentsBounds.Top);
        AssertAreEqual(right, smartObjectLayer.ContentsBounds.Right);
        AssertAreEqual(bottom, smartObjectLayer.ContentsBounds.Bottom);

        // 埋め込まれたスマート オブジェクト イメージを PSD スマート オブジェクト レイヤーからエクスポートしましょう
        smartObjectLayer.ExportContents(exportPath);

        // 元の画像が正しく保存されているか確認してみましょう
        image.Save(psdOutputPath, new PsdOptions(image));
        image.Save(pngOutputPath, new PngOptions() { ColorType = PngColorType.TruecolorWithAlpha });

        using (var innerImage = (RasterImage)smartObjectLayer.LoadContents(null))
        {
            AssertAreEqual(format, innerImage.FileFormat);

            // 元のスマートオブジェクトの画像を反転させましょう
            var pixels = innerImage.LoadArgb32Pixels(innerImage.Bounds);
            for (int i = 0; i < pixels.Length; i++)
            {
                var pixel = pixels[i];
                var alpha = (int)(pixel & 0xff000000);
                pixels[i] = (~(pixel & 0x00ffffff)) | alpha;
            }

            innerImage.SaveArgb32Pixels(innerImage.Bounds, pixels);

            // PSD レイヤーに埋め込まれたスマート オブジェクト画像を置き換えましょう
            smartObjectLayer.ReplaceContents(innerImage);
        }

        // 更新された画像が正しく保存されているか確認してみましょう
        image.Save(psd2OutputPath, new PsdOptions(image));
        image.Save(png2OutputPath, new PngOptions() { ColorType = PngColorType.TruecolorWithAlpha });
    }
}

関連項目