Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Visual C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.01.2012, 18:41   #1
zl@dey
 
Регистрация: 20.12.2011
Сообщений: 9
По умолчанию C++ и библиотека GD (не могу считать/записать картинку)

Доброго времени суток. Задача в следующем: Нарисовать/изменить картинку с помощью функций библиотеки GD. Не получается считать картинку с диска функцией gdImageCreateFromJpeg(FILE * f) - вылетает программа. Таже история с записью файл, но я нашел решение записи через буфер. Подскажите как еще можно считать картинку с файла, может тоже с использованием буфера?

Код:

Код:
#include <gd.h> 
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <windows.h>
#include <iostream.h>
#include <fstream.h>
#pragma comment(lib,"libgd.lib")

int main() {
gdImagePtr im;
FILE *jpegF;
int black, white;

im = gdImageCreate(200, 200);

black = gdImageColorAllocate(im, 0, 0, 0);
white = gdImageColorAllocate(im, 255, 255, 255);
//рисуем
gdImageLine(im, 1, 1, 199, 199, white);
gdImageLine(im, 199, 1, 1, 199, white);

//файл для записи
jpegF = fopen("test.jpg", "wb");


/* --- (Begin) --- Скопировать буфер изображения в jpeg-файл на диске --- */


char *data;
int size;

//Сохранение в файл с помощью буфера - аналог неработающей функции 
// gdImageJpeg(FILE *f)
data = (char *) gdImageJpegPtr(im, &size, 100);
if (!data) {
printf("No data\n"); return 1;
}
if (fwrite(data, 1, size, jpegF) != size) {
printf("No write\n"); 
return 1;
}

gdFree(data);

printf("Ok\n");

fclose(jpegF);

gdImageDestroy(im);

return 0;
}

Последний раз редактировалось ACE Valery; 24.01.2012 в 19:27.
zl@dey вне форума Ответить с цитированием
Старый 26.01.2012, 12:33   #2
zl@dey
 
Регистрация: 20.12.2011
Сообщений: 9
По умолчанию

От гуру-программеров помощи не дождался, но нашел решение. Напишу тут, вдруг кому-то пригодится.

Итак, дабы не исхищряться записями картинок через буфер, ставим в опциях проекта на вкладке С/С++ --> Code Generation --> Use run-time Library пункт Multithreaded DLL. На вкладке LINK явно указываем использовать libgd.lib. Все эти вещи помогут использовать функции gdImageFromJpeg(File *f) и gdImageJpeg(...) соответственно для считывания/записи изображения.

З.Ы. IDE должна быть не новее MS Visual Studio 6
zl@dey вне форума Ответить с цитированием
Старый 27.01.2012, 14:39   #3
Воронина Юлия
Новичок
Джуниор
 
Регистрация: 27.01.2012
Сообщений: 2
По умолчанию

А выложи готовый код целиком пожалуйста
Воронина Юлия вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Быстро записать картинку в файл. jetyb C# (си шарп) 3 11.04.2011 11:51
Как записать картинку в матрицу? 271089 Общие вопросы Delphi 3 21.12.2010 00:32
считать txt с фильтром и записать в xls alvazor Microsoft Office Excel 6 29.01.2010 13:21
Как считать jpg картинку на Borland C++ 3.1 B@R@B@$HK@ Общие вопросы C/C++ 3 28.05.2009 20:59
Как побайтно считать файл и записать в другой SeRhy Общие вопросы Delphi 2 09.06.2008 21:54