• 締切済み

pngについて

png画像についてネット調べるとよくlibpngというライブラリを見かけます。これはwindowsの環境でも使えるのでしょうか。 また、使えるならインストールの仕方を教えていただけないでしょうか? よろしくお願いします

みんなの回答

  • Lean
  • ベストアンサー率72% (435/603)
回答No.1

GnuWin32のパッケージのようですが LibPng for Windows というものがあるようです(参考URL)。

参考URL:
http://gnuwin32.sourceforge.net/packages/libpng.htm

関連するQ&A

  • png画像の縦一列を効率よく読み込むには

    libpngを使用してpng画像をデコードしています。 png画像の最初のピクセルを一列読み込みたいのですが、libpngの1行単位のデコードだと結局全てデコードすることになると思います。 png画像のデコードはCPU負荷が高いので縦1列効率よくデコードしたいのですが何か全てデコードしない方法をご存じの方がいらっしゃればお教え下さい。 最悪 png_read_rows()を改造するとか、libpngを使用しないとか別の方法でも構いません。 よろしくお願いいたします。

  • libpngでpng操作がうまくいかない

    ■環境 Windows 7 VS2008 以下をみて http://gmoon.jp/png/#whats 下記のソースを書いたのですが 実行時エラーになります。。。 libpngとzlibは リソースに追加しています。 ほかにもlibpng12.dllを追加しています。 ほしい情報は、windows環境でpngを扱う方法です。 #include "stdafx.h" #include <stdio.h> #include <stdlib.h> #include "png.h" #define WIDTH (256) #define HEIGHT (128) void write_png(char *file_name, unsigned char **image); int main() { unsigned char **image; // image[HEIGHT][WIDTH]の形式です int i, j; image = (png_bytepp)malloc(HEIGHT * sizeof(png_bytep)); // 以下3行は2次元配列を確保します for (j = 0; j < HEIGHT; j++) image[j] = (png_bytep)malloc(WIDTH * sizeof(png_byte)); for (i = 0; i < WIDTH; i++) { // 以下5行は単純なテストパターンを作ります for (j = 0; j < HEIGHT; j++) { image[j][i] = (unsigned char)i; } } write_png("test.png", image); // PNGファイルを作成します for (j = 0; j < HEIGHT; j++) free(image[j]); // 以下2行は2次元配列を解放します free(image); return 0; } void write_png(char *file_name, unsigned char **image) { FILE *fp; png_structp png_ptr; png_infop info_ptr; fp = fopen(file_name, "wb"); // まずファイルを開きます png_ptr = png_create_write_struct( // png_ptr構造体を確保・初期化します PNG_LIBPNG_VER_STRING, NULL, NULL, NULL); info_ptr = png_create_info_struct(png_ptr); // info_ptr構造体を確保・初期化します png_init_io(png_ptr, fp); // libpngにfpを知らせます png_set_IHDR(png_ptr, info_ptr, WIDTH, HEIGHT, // IHDRチャンク情報を設定します 8, PNG_COLOR_TYPE_GRAY, PNG_INTERLACE_NONE, PNG_COMPRESSION_TYPE_DEFAULT, PNG_FILTER_TYPE_DEFAULT); png_write_info(png_ptr, info_ptr); // PNGファイルのヘッダを書き込みます png_write_image(png_ptr, image); // 画像データを書き込みます png_write_end(png_ptr, info_ptr); // 残りの情報を書き込みます png_destroy_write_struct(&png_ptr, &info_ptr); // 2つの構造体のメモリを解放します fclose(fp); // ファイルを閉じます return; }

  • PNGを24bppBMPに変換したいのですが・・。

    libpngを用いて PNGを24bppBMPに変換したいのですがうまくいきません。 #include "png.h" #pragma comment(lib, "libpng.lib") void PNGtoBMP(char *filename) { FILE *fpt,*fpt_output; png_structp png_ptr; png_infop info_ptr; unsigned long width, height; int bit_depth, color_type, interlace_type; unsigned char **image; int i,j; MessageBox(NULL,"PNG End","PNG End",MB_OK); fopen_s(&fpt,filename, "rb"); if(fpt==NULL) { MessageBox(NULL,"fopen_s error","error",MB_OK); } else { // まずファイルを開きます fopen_s(&fpt_output,"PNG.bmp","wb"); png_structp png_ptr = png_create_read_struct ( PNG_LIBPNG_VER_STRING, (png_voidp)user_error_ptr, user_error_fn, user_warning_fn); #if 0 png_ptr = png_create_read_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL); #endif #if 0 info_ptr = png_create_info_struct(png_ptr); // info_ptr構造体を確保・初期化します png_init_io(png_ptr, fpt); // libpngにfpを知らせます png_read_info(png_ptr, info_ptr); // PNGファイルのヘッダを読み込みます png_get_IHDR(png_ptr, info_ptr, &width, &height, // IHDRチャンク情報を取得します &bit_depth, &color_type, &interlace_type, NULL, NULL); image = (png_bytepp)malloc(height * sizeof(png_bytep)); // 以下3行は2次元配列を確保します for (i = 0; i < height; i++) image[i] = (png_bytep)malloc(png_get_rowbytes(png_ptr, info_ptr)); png_read_image(png_ptr, image); // 画像データを読み込みます int campusline=(int)((width*24+31)/32.0)*4;//メモリ上の1Line(修正値も含む) int modification=campusline-(int)((24/8.0)*width); BITMAPINFOHEADER bmih; BITMAPFILEHEADER bmfh; //RGBQUAD rgbquad; DWORD filesize,bmfhsize,bmihsize; bmfhsize=sizeof(bmfh); bmihsize=sizeof(bmih); //rgbquadsize=sizeof(rgbquad); filesize=bmfhsize+bmihsize+(3*width+modification)*height; ::ZeroMemory(&bmfh, bmfhsize); ::ZeroMemory(&bmih, bmihsize); bmfh.bfType=0x4d42; bmfh.bfSize=filesize; bmfh.bfReserved1=0; bmfh.bfReserved2=0; bmfh.bfOffBits=bmfhsize+bmihsize; bmih.biSize=bmihsize; bmih.biWidth=width; bmih.biHeight=height; bmih.biPlanes=1; bmih.biBitCount=24; bmih.biClrUsed=0; bmih.biCompression=BI_RGB;//無圧縮形式 bmih.biSizeImage=0;//BI_RGBをセットした場合、0が好ましいとMSDNに書いてあった。 bmih.biXPelsPerMeter=0; bmih.biYPelsPerMeter=0; bmih.biClrImportant=0; //ヘッダファイルを書き込む //fwrite(&bmfh,sizeof(unsigned char),bmfhsize,fpt_output); //fwrite(&bmih,sizeof(unsigned char),bmihsize,fpt_output); #if 0 //ここで最終的に書き込みを行う。 for(i=0;i<height;i++) { fwrite(&image[i][0],sizeof(unsigned char),3*width,fpt_output); //修正値の代入 for(j=0;j<modification;j++) { fwrite("\x000",sizeof(unsigned char),1,fpt_output); } } #endif for (i = 0; i < height; i++) free(image[i]); // 以下2行は2次元配列を解放します free(image); png_destroy_read_struct( // 2つの構造体のメモリを解放します &png_ptr, &info_ptr, (png_infopp)NULL); #endif fclose(fpt); fclose(fpt_output); } } *同一ディレクトリに、libpng.lib, libz.lib(zlib.libではない) があります。また、libpng12.dllも要求されたので、同一 ディレクトリに配置しています。 バグは png_structp png_ptr = png_create_read_struct ( PNG_LIBPNG_VER_STRING, (png_voidp) の時点で起きていて これを書いてビルドして実行すると エラーになり open.cででばっかが止まります。 お忙しい中恐縮ですがどなたかご教授お願いします。

  • PNGの画像が写らない

    突然PNGの画像が開けなくなりました。 開こうとすると「(ファイルの名前).PNG は有効なWIN32アプリケーションではありません」と表示がでてきます。他のGIFやJPEGは開けるのですがPNGの画像は開けません。PCはWINDOWS XPを使っています。あまりPCに詳しくないので簡単な説明をお願いします。

  • foobar2000でpngが表示されない

    foobar2000についての質問です ver.9.5.5を使用し、スキン(FCL形式)をあてたところ ボタンなど、pngファイルが表示されず 見えない状態になっています。。。 スキン表示に必須の拡張ファイル(columnなど)の導入 libpng13.dll、zlib1.dllもwiki通りに配置しましたが 解決に至ってません ここまでの流れ↓ foobar2000.9.5.5 インストール 日本語化パッチあて 拡張コンポーネントDL&配置 libpng、zlib1 DL&配置 KUNG-FOOスキン(http://br3tt.deviantart.com/art/KUNG-FOO-foobar-config-96607000)インポート png表示されず 初心者なりにwikiをアテに ここまでやりましたが。。。 詳しい方どなたかご教授願います

  • flash cs5 のpng画像が汚くなる件

    flash cs5 のpng画像がパブリッシュすると汚くなります。 検索したところ、ライブラリで対象の画像を右クリックしてプロパティからロスレスを選び、スムージングにチェックを入れれば綺麗になるとのことですが、cs5ではライブラリからプロパティを開いてもロスレスというのが一切ありません。 スムージングというのもありません。 プロパティの詳細を開いてもあるのは ・Action Script リンケージ ・ランタイム共有ライブラリ ・オーサリング時の共有という項目です。 他にやり方はあるのでしょうか。 環境はmacです。 大変困っていますよろしくお願いいたします。

  • PNGが見れなくなりました

    ダウンロードしたPNGを適当なIEのウインドウにドロップしてPNGが表示されていましたが、それができなくなり、画像が壊れていた時に表示されたりする×が表示されるようになってしまいました。 regsvr32.exe /i shdocvw.dllや HKEY_CLASSES_ROOT\MIME\Database\Content Type\はもう十分に試したので、他に提案がある方教えて下さい。

  • ホームページで使用する画像でpngはダメですか?

    宜しくお願いします。 ホームページ作成の際、使用する画像でpngは、 対応しているブラウザーが少ない為、使用しない方が良いと聞きました。ですがjpgで保存してもあまり綺麗でなく、pngの方が綺麗に表示されるのでpngの画像を使用したいのですが、やはりpngでは閲覧してもらう際、デメリットが大きいのでしょうか? また、ホームページの容量が7MBというのは、閲覧されるネット環境にもよると思いますが、閲覧に時間がかかってしまいますか? アドバイス宜しくお願い致します!

  • W10でpng画像を見れるようにするには

    Windows フォト ビューアーで なぜかDLしたpng画像が真っ暗な画像になり見れないのですが 見れる方法ありますか。

  • pngからepsへの変換

    画像を変換したいのですがうまいこと変換できませんでした。 やってみた方法は、LINUX環境でコマンドconvertを使用したものです。 convert in_put.png out_put.epsと書きました。エラーも出ずに実行できたので、一応確認してみたのですが画像に変換されず、文字がずらっと並んだものしか出てきませんでした。 windows環境で使用したいので、LINUXで変換しないといけないというわけではありません。 よろしくお願いします。

専門家に質問してみよう