EditableImage
*Bu içerik, yapay zekâ (beta) kullanılarak çevrildi ve hatalar içerebilir. Sayfayı İngilizce görüntülemek için buraya tıkla.
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
Yöntemler
- DrawCircle(center : Vector2,radius : number,color : Color3,transparency : number,combineType : Enum.ImageCombineType):()
Belirtilen noktada bir daire çizer.
Verilen pozisyonda başka bir EditableImage çizer bu EditableImage içine.
Başka bir EditableImage projeyi bir EditableMesh içine yerleştirir ve sonucu bu EditableImage üzerine saklar.
- DrawImageTransformed(position : Vector2,scale : Vector2,rotation : number,image : EditableImage,options : Dictionary?):()
Boyutlandırma ve dönüşümler dahil olmak üzere bu EditableImage ile bir görüntü çizer ve belirtilen konuma yerleştirir.
Verilen iki nokta arasında bir çizgi çizer.
- DrawRectangle(position : Vector2,size : Vector2,color : Color3,transparency : number,combineType : Enum.ImageCombineType):()
Verilen üst sol konumda verilen boyutta bir dikdörtgen çizer.
Piksel bir dikdörtgen bölgeyi bir tampona okur.
Piksel bir dikdörtgen bölgeyi resme yazar.
Etkinlikler
Özellikler
Size
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
Çemberin merkezi, EditableImage 'nin üst sol köşesine göre. Kanvas sınırlarının dışındaki pozisyonlara izin verilir.
Pikselde çemberin çevresi.
Çemberin rengi.
0'ın tümüyle opak olması ve 1'in tümüyle şeffaf olmasıyla çemberin şeffaflığı.
Kaynak görüntünün pikselleri eklenen görüntünün pikselleriyle nasıl birleştirilir.
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
Eklendiği görüntünün üst sol köşesi çizilecek pozisyon.
Bu EditableImage içine çizmek için EditableImage .
Kaynak görüntünün pikselleri eklenen görüntünün pikselleriyle nasıl birleştirilmelidir.
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 .
Aşağıdaki anahtar-değer çiftleri içeren projeksiyon yapılandırma sözlüğü:
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.
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
Kaynak görüntünün merkez noktasının bu görüntüye yerleştirileceği piksel pozisyonu.
Kaynak görüntüsü için X ve Y eksenleri boyunca ölçek faktörleri.
Kaynak görüntünün merkez noktası etrafında uygulanan dönme açısı, dereceler.
Bu resme çekilecek kaynak EditableImage .
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 ).
Dönüşler
Kod Örnekleri
The following code draws a rotated and scaled image onto another.
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.
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ı.
Hattın son noktası.
Hattın rengi.
Hattın transparanlığı.
Kaynak görüntünün pikselleri eklenen görüntünün pikselleriyle nasıl birleştirilir.
Dönüşler
DrawRectangle
Verilen boyutun EditableImage üzerinde verilen sol üst konumda bir dikdörtgen çizer.
Parametreler
Dikdörtgenin en üst sol konumu. Diğer çizim yöntemlerinden farklı olarak, bu EditableImage kanvas sınırlarının dışında olmayabilir.
Çizilecek dikdörtgenin boyutu, piksel olarak.
Dikdörtgenin rengi.
Dikdörtgenin transparanlığı.
Kaynak görüntünün pikselleri eklenen görüntünün pikselleriyle nasıl birleştirilir.
Dönüşler
ReadPixelsBuffer
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
Okuyacak piksel yuvarlak bölgenin üst sol köşesi.
Okuyacak piksel dikdörtgen bölgesinin boyutu.
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.
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
Pikselleri çizmek için dikdörtgen bölgenin üst sol köşesi.
Yazılacak piksel dikdörtgen bölgesinin boyutu.
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.
Dönüşler
Kod Örnekleri
The following code reads the pixels of a EditableImage and writes back the inverted color values of those pixels.
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)