#c #thumbnails #snapshot
#c #эскизы #снимок
Вопрос:
Есть ли какой-либо способ получить изображение веб-страницы с помощью CGI C ? Я искал повсюду, и хотя я нашел ряд реализаций во всем, от Perl до C #, не смог найти ни одной реализации на C .
Идея заключается в том, чтобы пользователь, посещающий сайт, мог указать URL. Затем скрипт сделает снимок веб-сайта с URL-адресом, а затем покажет, как загрузить его на веб-сайт C CGI, который я создаю.
Любая помощь по этому вопросу была бы высоко оценена!
Спасибо!
Пример на Perl: Webthumb
Комментарии:
1. Какой код использовался в реализациях C #? Практически все, что вы можете написать на C #, можно легко перенести в приложение Win32 C .
2. Как в методе, где аргументом является URL?
3. @Bart — да, как в методе, который принимает URL-адрес в качестве аргумента, делает снимок указанного URL-адреса и сохраняет его в папке (или показывает его непосредственно на другом веб-сайте). По сути, я разрабатываю веб-сайт CGI на C , и как часть требования, мне нужно иметь возможность показывать большие буквы веб-сайтов. Хотя, поскольку никто в здравом уме не стал бы писать веб-сайт CGI на C , исходный материал там немного короткий 🙂
4. @Cody — попытаюсь найти их снова … хотя я думаю, что для них требовались специальные библиотеки C #…
5. Кроме того, эскиз, по-видимому, является значком? Это простой HTTP GET. Если это больше, то существует около миллиона веб-сервисов, которые позволят вам получить эскиз с помощью cgi, или вы можете просто самостоятельно разместить такой сервис и вызвать его. Таким образом, возможно, это не обязательно должно быть на c ?
Ответ №1:
Вам необходимо отобразить веб-страницу, чтобы создать снимок. Для рендеринга страницы на C вам необходимо включить движок браузера. Вы можете сделать это легко с помощью Qt (инструментарий для c ). Это взято из документации Qt и является всем, что вам нужно для отображения веб-страницы.
QWebView *view = new QWebView(ui->centralWidget);
view->load(QUrl("http://qt.nokia.com/"));
view->show();
Объект view имеет сигнал loadFinished. Вы могли бы подключить некоторый код к этому сигналу. После рендеринга страницы вы создаете снимок, как описано здесь.
Это сводится к:
QPixmap::grabWindow(mainwindow->winId())
Когда вы получите снимок экрана, вы можете вернуть байты в стандартный вывод из вашего cgi и готово.