お尋ねします。PDFファイルを匿名化したり署名を消したりする方法を教えて頂きたいのですが。審査したりされたりすることがあるのですが、今回は審査をしました。コメントなどのファイルを作ってPDF化したのですが、誰が作ったのかわからないようにするために、作成者(私)の名前を消すということなのですが。これが消えていないと審査結果の報告のサイトのアップロードが受け付けてくれないみたいなのです。

ネットにも情報があるようですが、アドビアクロバットリーダのバージョンが違うのでウィンドウの感じが違います(このソフトはバージョンごとに作り込みがだいぶ違うみたいですが)。なのでネットで出ている説明と自分の状況が一致しません。使っているのはAdobe Acrobat Reader DC というものです。

PDFファイルの作成に関して作成者情報を削除する方法を教えて下さい。

よろしくお願いします。

A 回答 (4件)

作成済みのPDFの場合だと、有料のAcrobatを使うか、フリーソフトなら


【 PDF-XChange Viewer 】で開けば消すことができます。
[ファイル]→[ドキュメントのプロパティ]を開き不要な情報を削除します。
http://forest.watch.impress.co.jp/library/softwa …

PDFに変換前の[印刷]などからPDFファイルにしたい場合には、以下の
PDF変換ソフトを使うと文書プロパティを埋め込まない設定ができます。
【 CubePDF 】
http://forest.watch.impress.co.jp/library/softwa …
これで[印刷]を実行すると、CubePDFのメイン画面が表示されるので、
[一般]タブで[ファイルタイプ]を[ PDF ]にして、[出力ファイル]を指定して、
[文書プロパティ]タブにある情報欄を入力しないで[変換]ボタンを押すと、
[タイトル]から[キーワード]までの情報を空欄にしたPDFになります。
CubePDFのマニュアルで上記のことを確認できますよ。
http://www.cube-soft.jp/cubepdf/CubePDF_users_ma …
私は、これで作成者などの記載がないPDFにしています。
    • good
    • 1

>普通のエディタで編集した文書を印刷機能でPDFにしたらどうなるだろうと思いますが。

作成者情報が消えるかもと思いますが。エディタには作成者情報などないはずなので。どうでしょうか。
オリジナルの作成者情報は消えると思いますが、
 印刷機能を実行したユーザ名
が新たに作成者情報になるようです。質問者さんが、質問者さんのPCで実行したのでは、結果、質問者さんが作成者情報になることに変わりないことになりそうです。

>PDFファイルの作成に関して作成者情報を削除する方法を教えて下さい。
 PCに新しいアカウントを設定する。アカウント名にはguest やtempや nobody など実質、質問者さんと結びつかない名前にする。
 そこで、印刷機能でPDF化する
というのはいかがでしょう?
    • good
    • 0

「Adobe Acrobat Reader DC」はあくまでもPDFファイルの閲覧ソフトなので変更などは出来ません。

有料の「Acrobat Pro DC」などが必要です。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。ネットでクレジット決済ですぐに購入できるでしょうか。
ふと思ったのですが、普通のエディタで編集した文書を印刷機能でPDFにしたらどうなるだろうと思いますが。作成者情報が消えるかもと思いますが。エディタには作成者情報などないはずなので。どうでしょうか。

お礼日時:2017/06/19 07:06

Adobe Acrobatを購入すればできますよ

    • good
    • 0
この回答へのお礼

回答ありがとうございます。アドビ純正でなく、フリーのものでいろいろ編集機能があるソフトはないでしょうか。アドビアクロバット(リーダーじゃない方)はPDF作成のために以前は持っていましたが、今はワードの保存形式の選択や文書の印刷によってできますので持っていないのですが。
どうでしょうか。

お礼日時:2017/06/19 07:02

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aと関連する良く見られている質問

QPDFにページを振りたい

CANONイメージガーデンで複数枚をまとめて、PDFを作りました。
ページを振る方法を教えてください。

取り込み時のファイル名を変更しても、ファイル名の印刷はできないですよね。
ファイル名を印刷できるなら、それでも構いません。
Excelなどのように表紙を別指定できれば一番良いのですが、面倒な工程があるなら、表紙も含めての連番でも良いです。

Acrobat Reader DCで開いています。

よろしくお願いします。
なお、有料は使えないので、無料でできる方法をお願いします。

Aベストアンサー

こちら↓を使ってPDFを作成したのですか?
http://ugp01.c-ij.com/ij/webmanual/MyImageGarden/M/1.1/JP/MIG/mig-087.html
複数枚のものを一つにまとめてPDFファイルとして保存したのですか?
http://ugp01.c-ij.com/ij/webmanual/MyImageGarden/M/1.1/JP/MIG/mig-500.html

まとめたとして、そのPDFファイルのヘッダーまたはフッターにページ数
を表示したいのですよね。
Adobe Acrobat Reader DCなどのPDFビューアでは無理なので、別の
PDF編集ソフトを使って、ページ数を追加するようにしてください。

ソフトの例
【 pdf_as 】
http://www.vector.co.jp/soft/winnt/writing/se491657.html

ダウンロードしたら解凍して、プログラム用のフォルダなどに保存して、
pdf_as.exeを実行します。
Acrobat Reader DCでPDFを開いたままなら、一度閉じます。

ページ番号を付けたいファイルをドロップするなどで追加し、メニューの
[ファイル]→[ヘッダー・フッター設定]を選択します。

[ヘッダー・フッター設定]ダイアログが開いたら、初期設定でフッターに
ページ番号を設定できるようになっているので、[開始]のみ[ 2 ]にして
開始番号を[ 1 ]で指定してから[ OK ]すれば、フッターにページ番号が
2ページから「1」で始まったものが追加されます。

ちなみに、No.1さんのは有料のAdobe Acrobat DCを使った方法なので、
希望とは違いますね。

こちら↓を使ってPDFを作成したのですか?
http://ugp01.c-ij.com/ij/webmanual/MyImageGarden/M/1.1/JP/MIG/mig-087.html
複数枚のものを一つにまとめてPDFファイルとして保存したのですか?
http://ugp01.c-ij.com/ij/webmanual/MyImageGarden/M/1.1/JP/MIG/mig-500.html

まとめたとして、そのPDFファイルのヘッダーまたはフッターにページ数
を表示したいのですよね。
Adobe Acrobat Reader DCなどのPDFビューアでは無理なので、別の
PDF編集ソフトを使って、ページ数を追加するようにしてください。

ソフトの...続きを読む

QPDFファイル

PDFファイルの作り方を教えて下さい。

自分なりに調べてみたのですが、変換のしかたしか出てこず困っています。
わたしのパソコンは、ワードエクセルがついていないタイプです。
Adobeリーダーはダウンロードして持っているようなんですが、なんせわかりません。


わからなさすぎ・・・

よろしくお願いします。

Aベストアンサー

No.1です。

> プリントアウトではなく、PCでPDFの資料を作成してメールで送りたいんですが、教えて頂いた方法で可能でしょうか?

はい。可能です。
WordでもExcelでもメモ帳でも文書を作成して印刷する機能のあるソフトウェアであれば何でも。


> PCでPDFで文書を作成したいんですが、どうしたらいいでしょうか?
> フリーソフトをインストールしましたが、文書を作成する方法がわかりません。

No.1に書きましたようにPDFファイルを作成するのはPDFファイルにしたい文書を作成しているソフトウェアで「印刷」をするのです。
その「印刷」の際にどのプリンターへ出力するかを指定できる小ウィンドウが表示されますが、そこで出力先プリンターの指定を行う個所をクリックすると、インストールしているPDFファイル作成ソフトがあたあもそのPCに接続されているプリンターのごとく一覧上に表示されますのでそれを選んで印刷処理を進めればよいだけです。
その理解でNo.1を読み直して下さい。

繰返しになりますが、PDFファイル作成ソフトはWordなどのような画面上で文書を書いてそれを保存すると拡張子が.pdfのファイルが出来る、、、というものではありません。
日ごろ文書作成に使用しているWordなどのファイルで普通に文書を作成し、その文書を開いている状態で、そのソフトの画面上部にあるメニューバーからファイル→印刷と進んでNo.1と上記に書きました操作を行う事で作成できるようになっています。
これは本家本元のAdobe Acrobatでも各種のPDFファイル作成が出来るフリーソフトでも同じです。
お分かりいただけましたでしょうか?


p.s.
ということで例えばWebブラウザで表示している画面をPDFファイルにすることも可能です。
私はインターネット通販での申し込み完了時の注文番号を記した画面や、航空券や乗車券などをネットで購入した際の同様の画面を「印刷」してPDFファイルにして保存しています。

参考まで。

No.1です。

> プリントアウトではなく、PCでPDFの資料を作成してメールで送りたいんですが、教えて頂いた方法で可能でしょうか?

はい。可能です。
WordでもExcelでもメモ帳でも文書を作成して印刷する機能のあるソフトウェアであれば何でも。


> PCでPDFで文書を作成したいんですが、どうしたらいいでしょうか?
> フリーソフトをインストールしましたが、文書を作成する方法がわかりません。

No.1に書きましたようにPDFファイルを作成するのはPDFファイルにしたい文書を作成しているソフトウェアで「印刷」...続きを読む

QC言語で、べき乗の計算をするプログラムについてです

X^8の計算を、掛け算を使わずに、足し算と引き算を使って計算するプログラムを作成するというものです。
足し算のみを使ってべき乗の計算をするプログラムは以下のソースコードの様にできたのですが、足し算と引き算の両方ともを使って計算するプログラムがわかりません。
べき乗の計算をどのように考えれば、足し算と引き算の両方を使って計算できるのか教えてください。
以下、足し算のみを使って計算するプログラムのソースコードです。
・・・ソースコード・・・
#include<stdio.h>

int main(void) {

int i, j, k;
i = 0; ///①Xの加算回数の値を保持する変数iを0に初期化する。///
j = 0; ///②X^2の加算回数の値を保持する変数jを0に初期化する。///
k = 0; ///③X^4の加算回数の値を保持する変数kを0に初期化する。///
double X, goukei1, goukei2, goukei3;
X = 0;
goukei1 = 0; ///④X^2の計算値を保持する変数goukei1を0に初期化する。///
goukei2 = 0; ///⑤X^4の計算値を保持する変数goukei2を0に初期化する。///
goukei3 = 0; ///⑥X^8の計算値を保持する変数goukei3を0に初期化する。///

printf("X=");
///数値Xを入力///
scanf_s("%lf", &X);

///⑦iがX以下か判定し、真ならば⑧~⑨を繰り返し、偽ならば繰り返しを終了する。///
for (i = 0; i < X; i++) { ///⑨iに1を加算する。///
goukei1 += X; ///⑧goukei1にXを加算する。///
}

///⑩jがgoukei1以下か判定し、真ならば⑪~⑫を繰り返し、偽ならば繰り返しを終了する。///
for (j = 0; j < goukei1; j++) { ///⑫jに1を加算する。///
goukei2 += goukei1; ///⑪goukei2にgoukei1を加算する。///
}

///⑬kがgoukei2以下か判定し、真ならば⑭~⑮を繰り返し、偽ならば繰り返しを終了する。///
for (k = 0; k < goukei2; k++) { ///⑮kに1を加算する。///
goukei3 += goukei2; ///⑭goukei3にgoukei2を加算する。///
}
///最終的な計算結果を出力///
printf("X^8=%f", goukei3);

return 0;
}

X^8の計算を、掛け算を使わずに、足し算と引き算を使って計算するプログラムを作成するというものです。
足し算のみを使ってべき乗の計算をするプログラムは以下のソースコードの様にできたのですが、足し算と引き算の両方ともを使って計算するプログラムがわかりません。
べき乗の計算をどのように考えれば、足し算と引き算の両方を使って計算できるのか教えてください。
以下、足し算のみを使って計算するプログラムのソースコードです。
・・・ソースコード・・・
#include<stdio.h>

int main(void) {
...続きを読む

Aベストアンサー

「引き算を使え」という問題の意図がよくわかりませんが、単純にfor文のカウンタ(質問文ではi, j, k)を加算ではなく減算でカウントするっていう意味だったりしないでしょうか。

ところで、X^8 = ((X^2)^2)^2 というアイデアは数学的には賢いやり方ですが、
足し算縛りのプログラムで作ると実は計算量は大きくなると思います。
X^8 = ((((((X*X)*X)*X)*X)*X)*X)*X の方が、実は計算回数が少なくて済みます。
X=10の場合、前者は10,110回、後者は70回の足し算になります。

Q大きなファイルサイズを扱えません

Microsoftによると、Wordファイルの最大サイズはテキストのみで32MBでこれを超えるとWord は作動しないそうです。
https://support.microsoft.com/ja-jp/help/211489/operating-parameter-limitations-and-specifications-in-word

でも、実際には、正常に動くのはテキストのみで3MBくらいまでであり、これを超えると動作がひどく鈍くなって、5MBくらいを超えると殆ど動かなくなり頻繁にハングアップするようになります。

公称値32MBと実働値3MBがあまりにも違いすぎるので、大きなファイルは3MB以下に分割して作成、編集しなければならず、とても不便です。

現状は、次のようです。
Windows 7 Ultimate 64 SP1
Word 2013
CPU Intel i7-980X( http://ark.intel.com/products/47932/Intel-Core-i7-980X-Processor-Extreme-Edition-12M-Cache-3_33-GHz-6_40-GTs-Intel-QPI )
メモリDDR3 1066、24GB

3MBよりもう少し大きいサイズ(せめて32MBの半分の16MBくらい)のファイルまで正常に動いてくれればだいぶ助かるのですが、3MBよりもう少し大きいサイズまで正常に動くようにするにはどうすればいいでしょうか。何よりもまず改善する必要があるのは何でしょうか。

Microsoftによると、Wordファイルの最大サイズはテキストのみで32MBでこれを超えるとWord は作動しないそうです。
https://support.microsoft.com/ja-jp/help/211489/operating-parameter-limitations-and-specifications-in-word

でも、実際には、正常に動くのはテキストのみで3MBくらいまでであり、これを超えると動作がひどく鈍くなって、5MBくらいを超えると殆ど動かなくなり頻繁にハングアップするようになります。

公称値32MBと実働値3MBがあまりにも違いすぎるので、大きなファイルは3MB以下に分割...続きを読む

Aベストアンサー

私も同じような症状で悩まされています。
私の場合はそれこそありとあらゆることをしたように思いますが、効果があったのは次の2つだけだったように思います。

(1)パソコンの高性能化
質問者さんの場合はすでにかなりハイスペックですが、CPUの多コア化、メモリの高速化・多チャンネル化、Wordファイルを保存しているハードディスクのSSD化などが有効でした。SSD化は、動作が遅い原因の1つはファイルの書き込みに多くの時間がかかることだったので、これを高速にしたということです。

(2)ファイルの軽量化
ファイル中の図形をJPEGファイルにして画像化しました。これでファイルサイズがかなり小さくなり軽く作動するようになりました。

あと、ファイルが壊れていることも考えられたので、壊れている箇所を削除するために、完全な新規ファイルを作って、その新規ファイルに動作の遅いファイルの中身を少量ずつ(半ページ分くらいずつ)コピーして、特にファイルの最末尾の改行記号はコピーしないようにして、動作の遅いファイルの中身を全部移してみました。でも、これは全く効果がありませんでした。もし、コピーするときにテキストデータでコピーしていたら効果があったのかもしれませんが、膨大な文書なのでそれはできませんでした。

現在は15MBくらいまでは、速くはないですが騙しだましで動きます。Wordは遅いので、Wordが何かし始めたらそれが終わるまでじっと耐えて待つことも必要だと思います。

私も同じような症状で悩まされています。
私の場合はそれこそありとあらゆることをしたように思いますが、効果があったのは次の2つだけだったように思います。

(1)パソコンの高性能化
質問者さんの場合はすでにかなりハイスペックですが、CPUの多コア化、メモリの高速化・多チャンネル化、Wordファイルを保存しているハードディスクのSSD化などが有効でした。SSD化は、動作が遅い原因の1つはファイルの書き込みに多くの時間がかかることだったので、これを高速にしたということです。

(2)ファイルの軽量化
ファ...続きを読む

Qwindowsのライセンスの有効期限がもうすぐ切れます

オークションで購入したパソコンにインストールされていたOSがKMSホスト?という物だったらしく起動するたびに「ライセンスの認証を行う必要があります」と出るようになりました。個人向けのWindows10を購入してライセンス認証を行いたいのですが、USB版、ダウンロード版、オンラインコード版のどれを買えば良いのかわかりません。(パソコン本体にCD/DVDドライブが無いのでDVD版は除外)またOSの再インストールは必要でしょうか?製品を購入してプロダクトキーを入力するだけで大丈夫なのでしょうか?

Aベストアンサー

「KMSホスト」は企業など大きな組織で使うボリュームライセンス版の認証に使う認証サーバなので、そのパソコンに入っているのもボリュームライセンス版でしょう。OS自体を再インストールした方が良いような気がします。
一般ユーザの購入可能なWindows10には「パッケージ版(提供媒体はUSBメモリだけ)」と「DSP版(提供媒体はDVD-ROMだけ)」がありますが、どちらを買うべきかは「オークションで購入したパソコン」の仕様によります。
機種によってはUSBメモリからの起動・OSインストールが不可で、再セットアップにUSB接続の光学ドライブが必須という事もあります。マシンの仕様を確認しましょう。

QCSVファイル中の不規則な数のスペースを1つのカンマで置換するバッチ

プログラミング全般について初心者です。
分かりにくい文章かもしれませんが、アドバイスいただければ幸いです。

SQLで出したテーブルをCSVファイルに吐き出しまし、
現在、aaa.csvファイルに
A1セル(りんご みかん ばなな)というデータが保存されていてる状態です。
※分かりにくいですが、半角スペースが統一されていません。

これを、aaa.csvファイルに
A1セル(りんご,みかん,ばなな)というように全て1つのカンマで置換するバッチを作りたいです。


実際にはA列全てのデータを上記のように置換をしたいと思っています。
また、バッチは全てコマンドプロンプトから実行しなければならない縛りがあるため
VBScriptかコマンドプロンプト上で実行できる方法を教えていただきたいです。

条件が多く、申し訳ございません。
よろしくお願いいたします。

--------------------------------------------------------------------------------------------------
<質問の経緯>
最終目標は
A1セル(りんご)B1セル(みかん)C1セル(ばなな)というエクセルファイルを作成することです。

半角スペースの数が不規則なまま、VBScriptを使って半角スペースごとにデータを区切るバッチを組んだところ、
A1セル(りんご)B1セル(みかん)C1セル( )D1セル( )E1セル(ばなな)というようにスペースの数と文字数によって統一感のない表になってしまいました。

そのため、各データ間の区切り記号の数を統一すれば、目的のエクセルファイル作成が可能になるのではないかという考えです。

プログラミング全般について初心者です。
分かりにくい文章かもしれませんが、アドバイスいただければ幸いです。

SQLで出したテーブルをCSVファイルに吐き出しまし、
現在、aaa.csvファイルに
A1セル(りんご みかん ばなな)というデータが保存されていてる状態です。
※分かりにくいですが、半角スペースが統一されていません。

これを、aaa.csvファイルに
A1セル(りんご,みかん,ばなな)というように全て1つのカンマで置換するバッチを作りたいです。


実際にはA列全てのデータを上記のように...続きを読む

Aベストアンサー

VBScript で
複数の空白を 1つにまとめる→分解
でいいのでは?

Qインストール

パソコンをあたらしくして、あるソフトをインストールしようとすると64ビットに対応していないとの事でどうしたらダウンロードできるのでしょうか?アドバイス御願いします

Aベストアンサー

32ビット版のOSにしか対応していないソフトも
多くありますが、かなり古いバージョンのソフトではないかと
思います。
32ビット版でしか使えないソフトでも64ビット版のOSでも
動くものはあります。

それ以前に古いバージョンのソフトであるなら、
新しくしたパソコンのOSに元々対応していないソフトも
多くあります。
この場合、仮にインストールできたとしても
色々不具合があり、まともに使えないこともあります。
対応外にソフトを使う場合は、すべて使う側の
自己責任になりますので、メーカーでは不具合の
サポートはしません。

具体的なソフト名の記載がありませんし、
OSも何をお使いかも(WindowsOSもしくはMacOSなど)
記載がないので、確実な回答を得るのは難しいと思います。

どうしてもそのソフトをお使いになりたい場合は、
ソフトをアップグレードするか(アップグレードが出来るなら)
32ビット版がインストールされている機種を購入するしかないと
思いますが、現在販売しているWindowsOSのメーカー機種は
64ビット版のOSがインストールされている機種が
ほとんどだとは思いますが。

32ビット版のOSにしか対応していないソフトも
多くありますが、かなり古いバージョンのソフトではないかと
思います。
32ビット版でしか使えないソフトでも64ビット版のOSでも
動くものはあります。

それ以前に古いバージョンのソフトであるなら、
新しくしたパソコンのOSに元々対応していないソフトも
多くあります。
この場合、仮にインストールできたとしても
色々不具合があり、まともに使えないこともあります。
対応外にソフトを使う場合は、すべて使う側の
自己責任になりますので、メーカーでは不具合の
...続きを読む

Qファイル名に日本語が入っていると圧縮できない

他の人からもらったファイルを圧縮することができませんでした。調べてみましたところ、右クリックから「送る」で圧縮をするときに、たとえば「170714おいしい新巻鮭.jpg」などのように、日本語で書かれているフォルダやファイルが含まれていると圧縮できないようです。

さらに、このファイルから「おいしい新巻鮭」の部分を消して「170714.jpg」とすると圧縮できました。また、F2キーをおして文字をいったん消して「170714おいしい新巻鮭」と改めて入力しなおすと、圧縮できるようになりました。

このファイルを作った人はWindows10です。一体何が起こっているというんでしょう?

Aベストアンサー

> たとえば「170714おいしい新巻鮭.jpg」などのように、日本語で書かれているフォルダやファイルが含まれていると圧縮できないようです。

フツーに日本語で入力されているように見えて、おかしな文字コードとか空白が使われているとか。
ファイルを移動する途中で、Unix/Linuxの環境とか、FAT32でフォーマットされたUSBメモリとか経由すると、ややこしい事が起こるかも?

文字コードの一括変換の記事がありましたが、記事が古くて現在のWindowsのUTF-16(のハズ)に非対応だったり…。

@IT:Windows TIPS -- Tips:ファイルの文字コードを変換する
http://www.atmarkit.co.jp/fwin2k/win2ktips/312charcode/charcode.html


> その元の持ち主のWindows10の人から、「圧縮できないんだけど

例えば、USBメモリ(FAT32でフォーマットされている)でファイルを渡されて、USBメモリ上で圧縮しようとしてるとかだったら、ややこしいかも。
一度、HDDにコピー(この時に適正に変換されるかも)してから圧縮、USBメモリに戻すとかでは。


どういう媒体、送信方法、ファイル形式は非圧縮で階層化されたフォルダやファイル?フォルダの深さやフォルダ名の長さは?で渡されたとかの情報を補足してみるとか。

> たとえば「170714おいしい新巻鮭.jpg」などのように、日本語で書かれているフォルダやファイルが含まれていると圧縮できないようです。

フツーに日本語で入力されているように見えて、おかしな文字コードとか空白が使われているとか。
ファイルを移動する途中で、Unix/Linuxの環境とか、FAT32でフォーマットされたUSBメモリとか経由すると、ややこしい事が起こるかも?

文字コードの一括変換の記事がありましたが、記事が古くて現在のWindowsのUTF-16(のハズ)に非対応だったり…。

@IT:Windows TIPS -- Tips...続きを読む

Qこれがでてしまいました ネットを見るとファイルを変更すればいいと書いてあるのですがそのやり方を教えて

これがでてしまいました
ネットを見るとファイルを変更すればいいと書いてあるのですがそのやり方を教えてください

Aベストアンサー

追加
BIOSセットアップ、Boot順序をUSBを第一にする(BIOSがUSB bootに対応していないものもある)
→インストールDVDの中身をUSBメディアにコピーし、コピー先の\sources直下に「PID.txt」という名前のファイルを以下の内容で作成
  [PID]
  Value=XXXXX-XXXXX-XXXXX-XXXXX-XXXXX →ライセンスキー
→同様に「EI.cfg」という名前のファイルを以下の内容で作成
  [EditionID]
  [Channel]
  Retail
  [VL]
  0
→USBメディアからインストール
http://junk-mac.cocolog-nifty.com/blog/2013/05/oem-activation-.html

ちなみに私のPCも、BIOSがUSB bootに対応していません。(内蔵HDDからの起動とCD/DVDドライブからの起動。FDDからの起動を除く)

QCのプログラムに無性にイライラするのはおかしいですか?

CQ出版のインタフェース 2017-5 の記事のプログラム例に
for( i=0; i<256; i++){
 for( y =0; y < Y; y++ ){
  for( x = 0; x < X; x++){
   p[0] = img -> imageData[img->widthStep* y + x*3 ]; //B(青色)
   if(p[0]==i){hn[i]++;}
  }
 }
}
がありました。このリストを見て、無性にイライラするのは私だけでしょうか?

なぜ、i,y,x の3重のループで処理しないといけないのか、y,xの2重ループで十分ではないかと思います。

for( y =0; y < Y; y++ ){
 for( x = 0; x < X; x++){
  p[0] = img -> imageData[img->widthStep* y + x*3 ];  //B(青色)
  hn[ p[0] ]++;
 }
}

3重にするならせめて、y,x,i の順にしてp[0]への代入は1回で済ませればと思います。

for( y =0; y < Y; y++ ){
 for( x = 0; x < X; x++){
  p[0] = img -> imageData[img->widthStep* y + x*3 ];  //B(青色)
  for( i=0; i<256; i++){
     if(p[0]==i){hn[i]++;}
  }
 }
}

最近のコンパイラの最適化では、私の書いたようなコーディング(修正?)は無意味なのでしょうか?

CQ出版のインタフェース 2017-5 の記事のプログラム例に
for( i=0; i<256; i++){
 for( y =0; y < Y; y++ ){
  for( x = 0; x < X; x++){
   p[0] = img -> imageData[img->widthStep* y + x*3 ]; //B(青色)
   if(p[0]==i){hn[i]++;}
  }
 }
}
がありました。このリストを見て、無性にイライラするのは私だけでしょうか?

なぜ、i,y,x の3重のループで処理しないといけないのか、y,xの2重ループで十分ではないかと思います。

for( y =0; y < Y; y++ ){
 for( x = 0; x < X; x++)...続きを読む

Aベストアンサー

利点を考えてみました


これを並列処理したときに
スレッド0: hn[0] に p[0] = 0 をカウント
スレッド1: hn[1] に p[0] = 1 をカウント
...
とすれば、
・img -> imageData は読み出すだけなので衝突しない
・hn[i] でアクセスする領域は、スレッド毎に i が違うので、同じ箇所に書き込まれることはない。
となり、排他処理が不要となります。
(もちろん、x,y,i,p[0]はスレッドでローカルな変数とします)

ただ、並列処理のオーバーヘッドや同時並列処理数等を考えると、こんな並列処理はしない方が効率的です。


あるいは、hn[]がシークに時間がかかる領域の場合、
hn[p[0]) で毎回違う位置を探しに行って、その時間が無視できないほどだったら、
先にhnを決めてしまった方が速くなるでしょう。

こちらも、非現実的です。


このQ&Aを見た人がよく見るQ&A

このカテゴリの人気Q&Aランキング