EditableImage

Artık kullanılmayanları göster

*Bu içerik, yapay zekâ (beta) kullanılarak çevrildi ve hatalar içerebilir. Sayfayı İngilizce görüntülemek için buraya tıkla.

Oluşturulamaz

EditableImage çalışma süresi oluşturma ve görüntü manipülasyonu için izin verir.

Boş bir EditableImage oluşturmak için, AssetService:CreateEditableImage() kullanın. Mevcut bir görüntüden EditableImage oluşturmak için, AssetService:CreateEditableImageAsync() kullanın.

EditableImage herhangi bir Content özelliğinde, örneğin ImageLabel.ImageContent veya MeshPart.TextureContent gibi bir görüntü alanında kullanılabilir.Bunun yapılması için içerik özelliğinin Content.fromObject(editableImage) olarak ayarlanması gerekir.

EditableImage koordinat sistemi, görüntünün sol üstüne göre mutlaktır:

  • Üst sol: (0, 0)
  • Sağ alt: (Size.X - 1, Size.Y - 1)

Bir nesneyi yayınlamak için özelliğine sahip bir nesneyi kullandığınızda, düzenlenebilir görüntü bir görüntü olarak yayınlanır ve özellik yeni bir varlık kimliğine ayarlanır.

Sınırları Güncelleme

Görüntü tarafında yalnızca bir tek EditableImage güncellenebilir per frame.Örneğin, şu anda gösterilen üç EditableImage nesneyi güncellerseniz, hepsinin güncellenmesi için üç çerçeve gerekecektir.

Yayınlanmış Deneyimlerin Etkinleştirilmesi

Güvenlik amaçlarıyla, EditableImage yayınlanmış deneyimler için varsayılan olarak başarısız olur.Kullanımı etkinleştirmek için, 13 yaşından büyük ve kimlik doğrulanmış olmalısınız.Doğrulandıktan sonra, Studio'nun Oyun Ayarlarını açın, Güvenlik seçin ve Mesh / Resim API'lerine İzin Verme geçişini etkinleştirin.

Yetkiler

Kötü kullanımı önlemek için, AssetService:CreateEditableImageAsync() sadece görüntü varlıklarını yüklemenizi ve düzenlemenizi sağlar:

  • Deneyimin yaratıcısına ait olanlar (deneyim bir birey tarafından sahipleniyorsa).
  • Bir grubun sahip olduğu (deneyim gruba aitse)
  • Kayıtlı Studio kullanıcısına ait olanlar (yer dosyası henüz Roblox'a kaydedilmedi veya yayınlanmadıysa).

APİ'ler yukarıdaki kriterlere uymayan bir varlığı yüklemeye kullanılırsa bir hata verir.

Hafıza Sınırları

Düzenlenebilir varlıklar şu anda hafıza kullanımı için pahalıdır.Müşteri performansı üzerindeki etkisini en aza indirmek için, EditableImage çok sıkı müşteri tarafı bellek bütçelerine sahiptir, ancak sunucu, Studio ve pluginler sınırsız bellekle çalışır.Bir EditableImage bağlantı noktasını çoklu görüntüye ilişkin Content veri türlerine bağlayarak (çok referanslı) bellek optimizasyonuna yardımcı olabilir.

Özet

Özellikler

  • Salt Okunur
    Çoğaltılmamış
    Paralel oku

    EditableImage pikseldeki boyut.

Yöntemler

Özellikler

Salt Okunur
Çoğaltılmamış
Paralel oku

EditableImage pikseldeki boyut.Maksimum boyut 1024×1024'tir.Bir EditableImage yeniden boyutlandırılamaz; bu özellik sadece okunur.Bir görüntüyü yeniden boyutlandırmak veya kırpmak için, yeni bir EditableImage oluşturun ve içeriği aktarmak için DrawImageTransformed() kullanın; sonra Destroy() çağırın.

Yöntemler

Destroy

()

Görüntünün içeriğini yok eder ve kullanılan belleği hemen geri alır.


Dönüşler

()

DrawCircle

()

Belirtilen noktada EditableImage üzerinde bir daire çizer.Eğer çember yarı saydamsa, kaynağın üzerinde birleştirilerek arkasındaki piksellere karışacaktır.

Parametreler

center: Vector2

Çemberin merkezi, EditableImage 'nin üst sol köşesine göre. Kanvas sınırlarının dışındaki pozisyonlara izin verilir.

Varsayılan değer: ""
radius: number

Pikselde çemberin çevresi.

Varsayılan değer: ""
color: Color3

Çemberin rengi.

Varsayılan değer: ""
transparency: number

0'ın tümüyle opak olması ve 1'in tümüyle şeffaf olmasıyla çemberin şeffaflığı.

Varsayılan değer: ""

Kaynak görüntünün pikselleri eklenen görüntünün pikselleriyle nasıl birleştirilir.

Varsayılan değer: ""

Dönüşler

()

DrawImage

()

Verilen pozisyonda başka bir EditableImage çizer bu EditableImage içine.Yeni resmin sınırlarının dışındaki pozisyonlar, yalnızca yeni resmin bir kısmının çizilmesine izin verir.

Parametreler

position: Vector2

Eklendiği görüntünün üst sol köşesi çizilecek pozisyon.

Varsayılan değer: ""

Bu EditableImage içine çizmek için EditableImage .

Varsayılan değer: ""

Kaynak görüntünün pikselleri eklenen görüntünün pikselleriyle nasıl birleştirilmelidir.

Varsayılan değer: ""

Dönüşler

()

DrawImageProjected

()

Belirtilen projeksiyon ve fırça yapılandırmasını kullanarak bir başka EditableImage projeyi bir EditableMesh içine aktarır ve sonucu bu EditableImage üzerinde saklar.

Parametreler

Proje etmek için kullanılan EditableMesh .

Varsayılan değer: ""
projection: Dictionary

Aşağıdaki anahtar-değer çiftleri içeren projeksiyon yapılandırma sözlüğü:

  • Direction ( Vector3 ) projektörün yüzleştiği yerde
  • Position ( Vector3 ) meshe göre yerel uzaydaki konum olarak.
  • Size ( Vector3 ) projektörün boyutu olarak.
  • Up ( Vector3 ) projektörün yerel uzayda meshe göre yukarı vektör olarak.
Varsayılan değer: ""
brushConfig: Dictionary

Aşağıdaki anahtar-değer çiftleri de dahil olmak üzere fırça yapılandırma sözlüğü:

  • AlphaBlendType ( Enum.ImageAlphaType ) bu projeksiyonun alfa değerlerini nasıl birleştireceğini belirler
  • ColorBlendType ( Enum.ImageCombineType ) bu projeksiyonun renk değerlerini nasıl birleştireceğini belirler
  • Decal ( EditableImage ) projeksiyon için kullanılan görüntü olarak.
  • FadeAngle (number) projeksiyon kenarlarının düşmesi için derecelerdeki açı olarak.
  • BlendIntensity (number) 0 ve 1 arasındaki değer olarak, projeksiyonun sonraki görüntüye ne kadar karıştırıldığını kontrol eden değer.
Varsayılan değer: ""

Dönüşler

()

DrawImageTransformed

()

Bu yöntem, ölçeklendirme ve dönüşüm gibi uygulanan dönüşümlerle bu EditableImage``EditableImage .Pozisyon parametri, kaynak görüntünün merkez noktasının dönüşümlerden sonra bu görüntüye yerleştirileceği yeri belirtir.Yeni resmin sınırlarının dışındaki pozisyonlar, yalnızca yeni resmin bir kısmının çizilmesine izin verir.

Parametreler

position: Vector2

Kaynak görüntünün merkez noktasının bu görüntüye yerleştirileceği piksel pozisyonu.

Varsayılan değer: ""
scale: Vector2

Kaynak görüntüsü için X ve Y eksenleri boyunca ölçek faktörleri.

Varsayılan değer: ""
rotation: number

Kaynak görüntünün merkez noktası etrafında uygulanan dönme açısı, dereceler.

Varsayılan değer: ""

Bu resme çekilecek kaynak EditableImage .

Varsayılan değer: ""
options: Dictionary

Ekstra yapılandırma için opcional sözlük:

  • CombineType : Kaynak görüntünün piksellerinin hedefle nasıl birleşeceğini belirtir. Varsayılanı Enum.ImageCombineType.AlphaBlend dır.
  • SamplingMode : Örnekleme yöntemini belirtir (örneğin, lineer için Default veya en yakın komşu için Pixelated ). Varsayılan değer Enum.ResamplerMode.Default dir.
  • PivotPoint : Ölçeklendirme ve dönüş için kaynak görüntüsündeki dönüş noktasını belirtir. Varsayılan, kaynak görüntünün merkezidir (yani Image.Size / 2 ).
Varsayılan değer: ""

Dönüşler

()

Kod Örnekleri

The following code draws a rotated and scaled image onto another.

EditableImage:DrawImageTransformed()

local AssetService = game:GetService("AssetService")
-- Example of drawing a rotated and scaled image onto another EditableImage
local srcImage = AssetService:CreateEditableImage({ Size = Vector2.new(256, 256) })
local dstImage = AssetService:CreateEditableImage({ Size = Vector2.new(512, 512) })
-- Drawing with a rotation of 45 degrees, scaling by 2x, and placing at (100, 100)
dstImage:DrawImageTransformed(
Vector2.new(100, 100), -- Position
Vector2.new(2, 2), -- Scale
45, -- Rotation (degrees)
srcImage, -- Source image
{
CombineType = Enum.ImageCombineType.AlphaBlend, -- Optional, default is AlphaBlend
SamplingMode = Enum.ResamplerMode.Default, -- Optional, default is Default
PivotPoint = srcImage.Size / 2, -- Optional, default is center of the source image
}
)

Aşağıdaki kod, bir görüntünün EditableImage:DrawImageTransformed() yöntemi kullanılarak nasıl kırpılabileceğini gösterir.

Düzenlenebilir Görüntü: DrawImageTransformed() - Kırpma

local AssetService = game:GetService("AssetService")
-- Kaynak resim
local srcImage = AssetService:CreateEditableImageAsync(Content.fromUri(assetUri))
-- Ofset ve boyut tarafından tanımlanan kesme alanı
local cropOffset = Vector2.new(50, 50)
local cropSize = Vector2.new(100, 100)
-- Ekin alanının boyutuyla hedef görüntü
local dstImage = AssetService:CreateEditableImage({ Size = cropSize })
-- Pozisyon (üst sol köşe)
local position = Vector2.new(0, 0)
-- Ölçek faktörleri (ölçekleme yok)
local scale = Vector2.new(1, 1)
-- Döndürme açısı (döndürme yok)
local rotation = 0
-- Kaynağı görüntüyü, görüntüyü kırpmak için ayarlanmış bir pivotla hedef görüntüsüne çizin
dstImage:DrawImageTransformed(position, scale, rotation, srcImage, {
CombineType = Enum.ImageCombineType.Overwrite,
PivotPoint = cropOffset, -- Ortadan noktayı çizmeye başlamak için cropOffset'a ayarlayın
})

DrawLine

()

Verilen noktalar arasında EditableImage bir piksel kalınlığında anti-aliased bir çizgi çizer.

Parametreler

Hattın başlangıç noktası.

Varsayılan değer: ""

Hattın son noktası.

Varsayılan değer: ""
color: Color3

Hattın rengi.

Varsayılan değer: ""
transparency: number

Hattın transparanlığı.

Varsayılan değer: ""

Kaynak görüntünün pikselleri eklenen görüntünün pikselleriyle nasıl birleştirilir.

Varsayılan değer: ""

Dönüşler

()

DrawRectangle

()

Verilen boyutun EditableImage üzerinde verilen sol üst konumda bir dikdörtgen çizer.

Parametreler

position: Vector2

Dikdörtgenin en üst sol konumu. Diğer çizim yöntemlerinden farklı olarak, bu EditableImage kanvas sınırlarının dışında olmayabilir.

Varsayılan değer: ""
size: Vector2

Çizilecek dikdörtgenin boyutu, piksel olarak.

Varsayılan değer: ""
color: Color3

Dikdörtgenin rengi.

Varsayılan değer: ""
transparency: number

Dikdörtgenin transparanlığı.

Varsayılan değer: ""

Kaynak görüntünün pikselleri eklenen görüntünün pikselleriyle nasıl birleştirilir.

Varsayılan değer: ""

Dönüşler

()

ReadPixelsBuffer

Paralel yaz

Bir EditableImage 'dan piksel olarak dikdörtgen bir bölgeyi okur ve bunu bir tampon olarak döndürür.Buffered'daki her sayı, dört bayttan oluşan bir sıraya depolanan piksellere sahip tek bir bayttır (kırmızı, yeşil, mavi ve alfa).

Bu yöntemin transparans yerine alfa kullandığını unutmayın, çizme yöntemlerinin aksine EditableImage.

Parametreler

position: Vector2

Okuyacak piksel yuvarlak bölgenin üst sol köşesi.

Varsayılan değer: ""
size: Vector2

Okuyacak piksel dikdörtgen bölgesinin boyutu.

Varsayılan değer: ""

Dönüşler

Her pikselin dört baytla temsil edildiği yerleme alanı (kırmızı, yeşil, mavi ve alfa'ya göre sırasıyla).Buffer'ın uzunluğu Size.X * Size.Y * 4 bayt olarak hesaplanabilir.

Kod Örnekleri

The following code reads two pixels from a EditableImage and creates a part with the average color between them.

EditableImage:ReadPixelsBuffer()

local AssetService = game:GetService("AssetService")
local options = { Size = Vector2.new(32, 32) }
local editableImage = AssetService:CreateEditableImage(options)
local pixelsBuffer = editableImage:ReadPixelsBuffer(Vector2.zero, Vector2.new(2, 1))
local color1 =
Color3.fromRGB(buffer.readu8(pixelsBuffer, 0), buffer.readu8(pixelsBuffer, 1), buffer.readu8(pixelsBuffer, 2))
local transparency1 = (255 - buffer.readu8(pixelsBuffer, 3)) / 255
local color2 =
Color3.fromRGB(buffer.readu8(pixelsBuffer, 4), buffer.readu8(pixelsBuffer, 5), buffer.readu8(pixelsBuffer, 6))
local transparency2 = (255 - buffer.readu8(pixelsBuffer, 7)) / 255
local averageColor = color1:Lerp(color2, 0.5)
local averageTransparency = (transparency1 + transparency2) / 2
local part = Instance.new("Part")
part.Color = averageColor
part.Transparency = averageTransparency
part.Parent = workspace

WritePixelsBuffer

()

Bir piksel yuvalarından bir dikdörtgen bölge yazıyor EditableImage bir tampondan.Buffered'daki her sayı, dört bayttan oluşan bir sıraya depolanan piksellere sahip tek bir bayttır (kırmızı, yeşil, mavi ve alfa).

Bu yöntemin transparans yerine alfa kullandığını unutmayın, çizme yöntemlerinin aksine EditableImage.

Parametreler

position: Vector2

Pikselleri çizmek için dikdörtgen bölgenin üst sol köşesi.

Varsayılan değer: ""
size: Vector2

Yazılacak piksel dikdörtgen bölgesinin boyutu.

Varsayılan değer: ""
buffer: buffer

Her pikselin dört baytla temsil edildiği bir tampon (kırmızı, yeşil, mavi ve alfa sırasıyla).Destekleyici uzunluğu Size.X * Size.Y * 4 bayt olmalıdır.

Varsayılan değer: ""

Dönüşler

()

Kod Örnekleri

The following code reads the pixels of a EditableImage and writes back the inverted color values of those pixels.

EditableImage:WritePixelsBuffer()

local AssetService = game:GetService("AssetService")
local options = { Size = Vector2.new(32, 32) }
local editableImage = AssetService:CreateEditableImage(options)
local pixelsBuffer = editableImage:ReadPixelsBuffer(Vector2.zero, editableImage.Size)
for i = 1, editableImage.Size.X * editableImage.Size.Y do
local pixelIndex = (i - 1) * 4
buffer.writeu8(pixelsBuffer, pixelIndex, 255 - buffer.readu8(pixelsBuffer, pixelIndex))
buffer.writeu8(pixelsBuffer, pixelIndex + 1, 255 - buffer.readu8(pixelsBuffer, pixelIndex + 1))
buffer.writeu8(pixelsBuffer, pixelIndex + 2, 255 - buffer.readu8(pixelsBuffer, pixelIndex + 2))
-- Set alpha to 255 to make all pixels fully opaque.
buffer.writeu8(pixelsBuffer, pixelIndex + 3, 255)
end
editableImage:WritePixelsBuffer(Vector2.zero, editableImage.Size, pixelsBuffer)

Etkinlikler