Я хотел бы узнать Rust и подумал, что было бы весело обрабатывать изображения. Я не знаю, с чего начать ... piston/rust-image? Но даже с этим, с чего мне начать?Как я могу обработать изображения с использованием ржавчины?
ответ
Место для начала - docs и the repository.
Это не сразу видно с целевой страницы документации, но основной тип в image
- ImageBuffer
.
new
function позволяет построить ImageBuffer
, представляющий изображение с заданной шириной /, хранения пикселей данного типа (например, RGB, или что with transparency). Можно использовать такие методы, как pixels_mut
, get_pixel_mut
и put_pixel
(последние ниже pixels_mut
в документации) для изменения изображения. Например.
extern crate image;
use image::{ImageBuffer, Rgb};
const WIDTH: u32 = 10;
const HEIGHT: u32 = 10;
fn main() {
// a default (black) image containing Rgb values
let mut image = ImageBuffer::<Rgb<u8>>::new(WIDTH, HEIGHT);
// set a central pixel to white
image.get_pixel_mut(5, 5).data = [255, 255, 255];
// write it out to a file
image.save("output.png").unwrap();
}
, который выглядит следующим образом:
РЭПО является особенно полезным в качестве отправной точки, так как он содержит примеры, в частности, она имеет an example из программно генерации an image. Когда я использую новую библиотеку, я открою документы и, если смущен, репо специально для поиска примеров.
На стороне примечания, я хочу, чтобы такие вещи, как «elmesque», были реализованы против «ржавого изображения» вместо того, чтобы требовать более ориентированные на рабочий стол части поршня. – ArtemGr
Спасибо большое! это был пример, который отсутствовал в документации для запуска! –
Этот код не компилируется, потому что теперь 'Imagebuffer' требует два аргумента: тип пикселя и контейнер для его хранения. Вы должны изменить, например, «let mut image = ImageBuffer ::
BTW, вопросы получат лучшие ответы (и, следовательно, станут более полезными для вас), если они специфичны, например. включая [то, что вы пробовали] (http://mattgemmell.com/what-have-you-tried/), и указывает, где вы запутались/потеряны, например. возможно, вы не знаете, как установить библиотеку, может быть, вы не знаете, как создать изображение для изменения. Я принял последнее в своем ответе, но я не уверен! Не забудьте уточнить вопрос, если вы все еще потеряли. – huon
Добро пожаловать в переполнение стека! В дополнение к существующим советам вы должны прочитать [Какие темы я могу задать] (http://stackoverflow.com/help/on-topic) и [Как задать хороший вопрос] (http://stackoverflow.com/помощь/как к спрашивать). Например, неясно, есть ли у вас опыт создания процедурных образов на любом языке. К сожалению, SO все равно не подходит для ответа на этот вопрос! – Shepmaster
Вы правы, это был очень широкий вопрос. Спасибо, что терпеливы. @ huon-dbaupp получил это место, хотя: я хотел знать, как создать изображение, отредактировать его и сохранить. Процедурные материалы могут прийти позже. Еще раз спасибо. – Rik