Я работаю над сценарием, который должен снимать изображения и сложить их. Изображение 0 внизу, изображение 1 над этим, изображение 2 по этому и т. Д. И т. Д. С изображением n сверху. Обратите внимание, что, хотя каждый слой должен быть настолько непрозрачным, насколько это возможно, отдельные пиксели в слое могут быть полупрозрачными. < /P>
Проблема в том, что полупрозрачные пиксели слишком темные, когда они накладываются на что -либо, кроме чистой прозрачности. Мои компонентные изображения-все .png, экспортируются индивидуально из Gimp. Хотя я понимаю, что код, который у меня уже есть, может быть просто абстракцией обновления каждого отдельного пикселя. Я могу добавить каждый шаг изображения, объединяющего из кода, если это будет полезно. < /P>
using SkiaSharp;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
namespace ImageCombiner
{
internal class Program
{
static void Main(string[] args)
{
string
folderPath = @"C:\Users\[username]\Pictures\[subfolder]\CombinedImage\"; // Text in brackets omitted
SKBitmap
bitmap = new SKBitmap();
int
counter = 0;
// Throw an error if the path does not exist
if (Directory.Exists(folderPath) == false)
{
Console.WriteLine($"Folder '{folderPath}' does not exist.");
}
// Else process the images
else
{
List imageFiles = Directory.GetFiles(folderPath)
.Where(file => Path.GetExtension(file).ToLower() == ".png" && file.ToLower().Contains("layer_"))
.ToList();
// Console.WriteLine("Image " + imageFiles.First() + " exists");
SKImageInfo
info = new SKImageInfo(20, 20);
SKSurface
surface;
SKCanvas
canvas;
SKPaint
skPaint = new SKPaint();
skPaint.BlendMode = SKBlendMode.HardLight;
surface = SKSurface.Create(info);
canvas = surface.Canvas;
foreach (string filePath in imageFiles)
{
bitmap = SKBitmap.Decode(File.ReadAllBytes(filePath));
if (bitmap != null)
{
Console.WriteLine("Image " + filePath + " exists");
// Add the current file to the bitmap
canvas.DrawBitmap(bitmap, 0, 0, skPaint);
// Save the new bitmap as a png image
SKImage
finalImage = surface.Snapshot();
SKData
data = finalImage.Encode(SKEncodedImageFormat.Png, 100);
using (FileStream fs = File.OpenWrite(folderPath + "FinalImage_" + counter.ToString() + ".png"))
{
data.SaveTo(fs);
}
}
counter++;
}
}
}
}
}
< /code>
слой 0 < /p>
слой 1 < /p>
слой 2 < /p>
слой 3 < /p>
Ожидаемый результат (как он выглядит в GIMP) < /p>
Фактический результат < /p>
. Skiasharp, даже пробуя их с обратным списком изображений. Я не знаю, нужно ли мне изменить то, что я делаю, с непрозрачностью изображений компонентов, или есть какой -то способ сочетания режимов смешивания для достижения этого. Я также немного посмотрел через посты Reddit и объяснения ИИ (последнее из которых было прямо о том, как «решить» проблему).
Если есть еще один пакет C#, который выполняет эту задачу лучше (и могу работать на основных платформах), я приму это как ответ (при условии, что я могу работать).>
Подробнее здесь: https://stackoverflow.com/questions/797 ... s-too-dark
C# Skiasharp рисует полупрозрачные пиксели слишком темные ⇐ C#
Место общения программистов C#
-
Anonymous
1757386646
Anonymous
Я работаю над сценарием, который должен снимать изображения и сложить их. Изображение 0 внизу, изображение 1 над этим, изображение 2 по этому и т. Д. И т. Д. С изображением n сверху. Обратите внимание, что, хотя каждый слой должен быть настолько непрозрачным, насколько это возможно, отдельные пиксели в слое могут быть полупрозрачными. < /P>
Проблема в том, что полупрозрачные пиксели слишком темные, когда они накладываются на что -либо, кроме чистой прозрачности. Мои компонентные изображения-все .png, экспортируются индивидуально из Gimp. Хотя я понимаю, что код, который у меня уже есть, может быть просто абстракцией обновления каждого отдельного пикселя. Я могу добавить каждый шаг изображения, объединяющего из кода, если это будет полезно. < /P>
using SkiaSharp;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
namespace ImageCombiner
{
internal class Program
{
static void Main(string[] args)
{
string
folderPath = @"C:\Users\[username]\Pictures\[subfolder]\CombinedImage\"; // Text in brackets omitted
SKBitmap
bitmap = new SKBitmap();
int
counter = 0;
// Throw an error if the path does not exist
if (Directory.Exists(folderPath) == false)
{
Console.WriteLine($"Folder '{folderPath}' does not exist.");
}
// Else process the images
else
{
List imageFiles = Directory.GetFiles(folderPath)
.Where(file => Path.GetExtension(file).ToLower() == ".png" && file.ToLower().Contains("layer_"))
.ToList();
// Console.WriteLine("Image " + imageFiles.First() + " exists");
SKImageInfo
info = new SKImageInfo(20, 20);
SKSurface
surface;
SKCanvas
canvas;
SKPaint
skPaint = new SKPaint();
skPaint.BlendMode = SKBlendMode.HardLight;
surface = SKSurface.Create(info);
canvas = surface.Canvas;
foreach (string filePath in imageFiles)
{
bitmap = SKBitmap.Decode(File.ReadAllBytes(filePath));
if (bitmap != null)
{
Console.WriteLine("Image " + filePath + " exists");
// Add the current file to the bitmap
canvas.DrawBitmap(bitmap, 0, 0, skPaint);
// Save the new bitmap as a png image
SKImage
finalImage = surface.Snapshot();
SKData
data = finalImage.Encode(SKEncodedImageFormat.Png, 100);
using (FileStream fs = File.OpenWrite(folderPath + "FinalImage_" + counter.ToString() + ".png"))
{
data.SaveTo(fs);
}
}
counter++;
}
}
}
}
}
< /code>
слой 0 < /p>
слой 1 < /p>
слой 2 < /p>
слой 3 < /p>
Ожидаемый результат (как он выглядит в GIMP) < /p>
Фактический результат < /p>
. Skiasharp, даже пробуя их с обратным списком изображений. Я не знаю, нужно ли мне изменить то, что я делаю, с непрозрачностью изображений компонентов, или есть какой -то способ сочетания режимов смешивания для достижения этого. Я также немного посмотрел через посты Reddit и объяснения ИИ (последнее из которых было прямо о том, как «решить» проблему).
Если есть еще один пакет C#, который выполняет эту задачу лучше (и могу работать на основных платформах), я приму это как ответ (при условии, что я могу работать).>
Подробнее здесь: [url]https://stackoverflow.com/questions/79759459/c-sharp-skiasharp-draws-translucent-pixels-too-dark[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия