Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Solovei95
0 / 0 / 0
Регистрация: 20.06.2011
Сообщений: 14
#1

Генерация PNG (проблема) - C++

20.06.2011, 12:37. Просмотров 673. Ответов 2
Метки нет (Все метки)

Код
//test3.cpp
//----------------------------------------------------------
//
#pragma pack(1)

#include <stdio.h>
#include <stdlib.h>

struct _IHDR
{
  unsigned long  pngWidth;
  unsigned long  pngHeight;
  unsigned char pngBitDepth;
  unsigned char pngColorType;
  unsigned char pngComType;
  unsigned char pngFilMeth;
  unsigned char pngIntMeth;
};

int main(int argc, char** argv)
{
  _IHDR ihdr = {256,256,8,6,0,0,0};
  char szOut[16] = "test.png";
  unsigned int  img[256][256];
  unsigned int  x, y;
  unsigned int  r, g, b, a;
  unsigned int  r2, g2, b2, a2;
  FILE        * f2;

  // draw gradiend
  for (y=0; y<256; y++)
  for (x=0; x<256; x++)
  {
    a = (255*x)/256;
    r = 0;
    g = 192;
    b = 0;

	r2 = (0*(255-a)+r*a)/255;
	g2 = (192*(255-a)+g*a)/255;
	b2 = (255*(255-a)+b*a)/255;
	a2 = 255;

    img[y][x] = (a2<<24) + (r2<<16) + (g2<<8) + b2;
  }

  // save tga
  if ((f2 = fopen(szOut, "wb")) != 0) 
  {

	fwrite("IHDR", 4, 1, f2);
	fwrite(&ihdr, sizeof(ihdr), 1, f2);
	fwrite("IDAT", 4, 1, f2);
	for (y=0; y<256; y++){
    fwrite(&img[256-1-y][0], 256*4, 1, f2);
	}
	fwrite("IEND", 4, 1, f2);
    fclose(f2);
  }

  printf("OK\n");
  return 0;
}
Я не могу сгенерировать корректный PNG файл! Помагите!

Добавлено через 29 минут
Блин, ну помагите, а?
Помочь сложно?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.06.2011, 12:37
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Генерация PNG (проблема) (C++):

Объединение нескольких png файлов в один png-файл - C++
В общем надо написать програмулину, которая объединяет несколько png файлов (ширина и высота одинаковы у изображений) в один png-файл. ...

Read PNG in C - C++
Всем привет. Подскажите как на С (без привлечения сторонних библиотек) прочитать PNG файл. В конечном итоге хотелось бы получить...

Считывание PNG - C++
Здравствуйте,форумчане) Пытаюсь прочитать PNG файл,вообще убейте не понимаю почему не работает.Даже длину и ширину нормально не...

Конвектор png в jpg - C++
Хочу написать прогу для конвертирования png формата изображения в jpg формат изображения. Можете объяснить как это реализуется, дать ссылки...

Чтение PNG файла - C++
описал структуру заголовка чанка struct _PNG_ChunkHead { unsigned int _length; char _type; }; после чтения чанка IHDR...

Вывод png изображения на экран - C++
Здравствуйте уважаемые программисты! Подскажите как вывести png изображение на экран. Потом еще нужно будет вращать его на произвольный...

2
grizlik78
Эксперт С++
1966 / 1459 / 120
Регистрация: 29.05.2011
Сообщений: 3,018
20.06.2011, 12:46 #2
Во-первых PNG файл начинается с 8-байтовой сигнатуры, которой здесь нет.
Во-вторых, каждый chunk должен начинаться размером данных этого чанка, а завершаться CRC.
В-третьих, многобайтовые числа записываются от старшего к младшему.
Ну и в четвёртых, а что, готовую библиотеку никак нельзя?
0
odip
Эксперт С++
7159 / 3221 / 59
Регистрация: 17.06.2009
Сообщений: 14,164
20.06.2011, 13:26 #3
Используй библиотеку libgd
А то что ты тут нарисовал - фигня полная
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.06.2011, 13:26
Привет! Вот еще темы с ответами:

Спрятать сообщение в png файл - C++
Работал с BMP файлом - там всё просто. Но с png возникли трудности - формат сжатый, а именно zlib. Что делать? Как спрятать текст в png...

Вставить картинку png (Glut) С++ - C++
Вообщем написал змейку с помощью glut. Все работает прекрасно. Решил заменить квадраты (которые ест змейка) на картинки яблок. Начал...

ActiveX для просмотра PNG - C++
Подскажите, где можно взять ActiveX для просмотра PNG?

Я не могу преобразовать PNG (RGBA) в JPEG - C++
Проблема заключается в том, что программа сразу закрывается! #include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; extern &quot;C&quot; { #include...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru