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ış Deneyimler için Düzenlenebilir Görüntü Etkinleştirme

Güvenlik amaçlarıyla, EditableImage yayınlanmış deneyimler için varsayılan olarak başarısız olur.EditableImage kullanımını etkinleştirmek için, 13+ yaş doğrulanmalı ve Kimlik doğrulandı.Doğrulandıktan sonra, Studio açın.Seç Dosya > Oyun Ayarları > Güvenlik ve Mesh & Image API'leri İzinle geçişini etkinleştirin.Geçişi etkinleştirmeden önce Kullanım Koşullarını incelemeyi unutmayın.

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 grupaitse)
  • 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.

Özet

Özellikler

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 kapalı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
}
)

The following code shows how cropping an image can be done using the EditableImage:DrawImageTransformed() method.

EditableImage:DrawImageTransformed() - Crop

local AssetService = game:GetService("AssetService")
-- Source image
local srcImage = AssetService:CreateEditableImageAsync(Content.fromUri(assetUri))
-- Crop area defined by offset and size
local cropOffset = Vector2.new(50, 50)
local cropSize = Vector2.new(100, 100)
-- Destination image with size of the crop area
local dstImage = AssetService:CreateEditableImage({ Size = cropSize })
-- Position (top-left corner)
local position = Vector2.new(0, 0)
-- Scale factors (no scaling)
local scale = Vector2.new(1, 1)
-- Rotation angle (no rotation)
local rotation = 0
-- Draw the source image onto the destination image with adjusted pivot to crop the image
dstImage:DrawImageTransformed(position, scale, rotation, srcImage, {
CombineType = Enum.ImageCombineType.Overwrite,
PivotPoint = cropOffset, -- Set pivot point to cropOffset to start drawing from there
})

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