Форум программистов, компьютерный форум CyberForum.ru

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

Восстановить пароль Регистрация
 
Solovei95
0 / 0 / 0
Регистрация: 20.06.2011
Сообщений: 14
20.06.2011, 12:37     Генерация PNG (проблема) #1
Код
//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 минут
Блин, ну помагите, а?
Помочь сложно?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.06.2011, 12:37     Генерация PNG (проблема)
Посмотрите здесь:

помогите пожалуйста проблема с перегрузкой операторов '-' >> <<, возможно еще с конструктором без параметров наверно проблема C++
Read PNG in C C++
C++ Конвектор png в jpg
C++ ActiveX для просмотра PNG
C++ Вывод png изображения на экран
C++ Считывание PNG
Спрятать сообщение в png файл C++
Чтение PNG файла C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
grizlik78
Эксперт C++
 Аватар для grizlik78
1882 / 1414 / 101
Регистрация: 29.05.2011
Сообщений: 2,958
20.06.2011, 12:46     Генерация PNG (проблема) #2
Во-первых PNG файл начинается с 8-байтовой сигнатуры, которой здесь нет.
Во-вторых, каждый chunk должен начинаться размером данных этого чанка, а завершаться CRC.
В-третьих, многобайтовые числа записываются от старшего к младшему.
Ну и в четвёртых, а что, готовую библиотеку никак нельзя?
odip
Эксперт C++
 Аватар для odip
7225 / 3287 / 58
Регистрация: 17.06.2009
Сообщений: 14,165
20.06.2011, 13:26     Генерация PNG (проблема) #3
Используй библиотеку libgd
А то что ты тут нарисовал - фигня полная
Yandex
Объявления
20.06.2011, 13:26     Генерация PNG (проблема)
Ответ Создать тему
Опции темы

Текущее время: 18:58. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru