ちょいちょい思ったことを書き散らす

間違い、コメント等があれば一言ください

全体表示

[ リスト | 詳細 ]

記事検索
検索

全8ページ

[1] [2] [3] [4] [5] [6] [7] [8]

[ 次のページ ]

3ヶ月ぶりですか。。。

ちょっと時間がたってしまったと思っていたら、いつの間にか最後に更新してから3ヶ月も経過してました

自分の中の感覚ではあっという間だったのですが。

色々モチベーションを保つのが大変な3ヶ月でした。
というか保てなかったので仕事辞ることにしちゃいました。

生きて行くって大変ですね。
やりたい事を見つける事ができるって凄いことですね。

今やりたい事をやっていて、人生が充実しているという方がいれば
自分はめちゃくちゃ尊敬します。

会社に出社しなくなったら、ちょっとだけ充電してまた頑張ろう!
今まで忙しくて全然会えなかった友達に会いたいなぁ。
画像の縮小をして、かつ画像に文字まで入れてしまおうというものです。
しかし、コメントをあまり入れていないので、あとから追うのが大変そうです。

/**
* 縦の比率が小さい場合
* @param im
* @param prmFont
* @param comment
* @return
*/
private BufferedImage cropImageShortestHeght(BufferedImage im,Font prmFont,String comment){
//元画像のサイズを抽出
double souceHeight = im.getHeight();
double souceWidth = im.getWidth();
//縮小比率
double reductionRatio = resizeH/souceHeight;
//左右の差を出す
double horizontalLength = souceWidth * reductionRatio;
double horizontalDiff = resizeW - horizontalLength;
double distance = horizontalDiff/2;

BufferedImage resizeImage = null;
try{
//出力用の背景を作成する
resizeImage = new BufferedImage((int)resizeW,(int)resizeH, BufferedImage.TYPE_INT_RGB);

//元画像のサイズを変更する
Graphics2D image = im.createGraphics();
image.scale(reductionRatio, reductionRatio);

//画像を背景に移す
Graphics2D g = resizeImage.createGraphics();
g.drawImage(im, (int)distance, 0, (int)(im.getWidth() * reductionRatio),(int)(im.getHeight() * reductionRatio), this);

g.setFont(prmFont);
g.setColor(Color.white);
comment = comment.replaceAll("<br />", "");
comment = comment.replaceAll("<br/>", "");
comment = comment.replaceAll("<br />", "");
if(comment.length() < 30){
g.drawString(comment, 40, 60);
}else{
int length = comment.length() / 30;
int backNumber = 0;
int endcount = 0;
int y = 0;
for(int i = 1; i <= length; i++){
endcount = 30 * i - 1;
y = 30 * i + 30;
String test = comment.substring(backNumber,endcount);
g.drawString(test, 80, y);
backNumber = endcount;
}
String test = comment.substring(backNumber,comment.length());
g.drawString(test, 80, y + 30);
       }
g.dispose();
}catch (NullPointerException e) {
System.out.println("イメージがnull");
}

return resizeImage;
}

/**
* 縦横比率が同じ
* @param im
* @param prmFont
* @param comment
* @return
*/
private BufferedImage cropImageSameRatios(BufferedImage im,Font prmFont,String comment){
//元画像のサイズを抽出
double souceHeight = im.getHeight();
double souceWidth = im.getWidth();
//縮小比率
double reductionRatio = resizeW/souceWidth;
//左右の差を出す
double verticalLength = souceHeight * reductionRatio;
double verticalDiff = resizeH - verticalLength;
double distance = verticalDiff/2;

BufferedImage resizeImage = null;
try{
//出力用の背景を作成する
resizeImage = new BufferedImage((int)resizeW,(int)resizeH, BufferedImage.TYPE_INT_RGB);

//元画像のサイズを変更する
Graphics2D image = im.createGraphics();
image.scale(reductionRatio, reductionRatio);

//画像を背景に移す
Graphics2D g = resizeImage.createGraphics();
g.drawImage(im, 0, 0, (int)(im.getWidth() * reductionRatio),(int)(im.getHeight() * reductionRatio), this);

g.setFont(prmFont);
g.setColor(Color.white);
comment = comment.replaceAll("<br />", "");
comment = comment.replaceAll("<br/>", "");
comment = comment.replaceAll("<br />", "");
if(comment.length() < 30){
g.drawString(comment, 40, 60);
}else{
int length = comment.length() / 30;
int backNumber = 0;
int endcount = 0;
int y = 0;
for(int i = 1; i <= length; i++){
endcount = 30 * i - 1;
y = 30 * i + 30;
String test = comment.substring(backNumber,endcount);
g.drawString(test, 80, y);
backNumber = endcount;
}
String test = comment.substring(backNumber,comment.length());
g.drawString(test, 80, y + 30);
       }
g.dispose();
}catch (NullPointerException e) {
System.out.println("イメージがnull");
}

return resizeImage;
}
一応2パターンほど載せてみました。違いはサイズ変更した画像をズラして置くかどうかです。
ちなみに画像の処理をする場合クラスをextends Appletしてください。
処理速度にこだわらなければ、以下の方法で画像の入出力するのが簡単です。
ImageIOを使用します。

/**
* 画像を取得
* @param prmFile
* @return
*/
public BufferedImage GetBufferedImage(File prmFile){
BufferedImage imImage = null;
try{
imImage = ImageIO.read(prmFile);
}catch (Exception Ee) {
System.out.println(Ee.getMessage());
}
}

/**
* その他の画像の出力
* @param im
* @param prmImageName
* @param ExtensionName
*/
public void OutputImage(
BufferedImage im,String prmImageName,String ExtensionName,String OutputPath){
try{
//画像の出力
FileOutputStream out = null;
out = new FileOutputStream(OutputPath + prmImageName);
ImageIO.write(im,ExtensionName,out);
out.close();
}catch (Exception Ee) {
System.out.println(Ee.getMessage() + prmImageName + "の書き出しでエラー。");
}
}

BufferedImage im = GetBufferedImage(file);
OutputImage(im);
みたいな形で使ってください。ちなみにExtensionNameを取る方法もここのどこかに載ってます。
JAVAでJPEG/PNGファイルを取得し書き出すには以下の方法で実行できる。
共通的に使えるのもあるけど、個別にライブラリを指定したほうが処理が速い。
ただ非推奨ライブラリなので、エラーになってしまう可能性があるので、その時はeclipse等の設定で回避する必要があります。
回避方法(eclipseの場合)
設定-JAVA-コンパイラ-エラー警告-使用すべきでない制限されたAPI-禁止された参照のレベルを変えれば良いです。

以下メソッド
    
im = GetBufferedImageJpeg(file);か
im = GetBufferedImagePNG(file);って感じで呼び出して
outPut側にimを渡す。
/**
* JPEGファイルの取得
* @param prmFile
* @return
*/
public BufferedImage GetBufferedImageJpeg(File prmFile){
BufferedImage imjpeg = null;
try{
InputStream fle = new FileInputStream(prmFile);
JPEGImageDecoder decoder = JPEGCodec.createJPEGDecoder(fle);
imjpeg = decoder.decodeAsBufferedImage();
}catch (FileNotFoundException eF) {
System.out.println(prmFile.getName() + "のデータがNull。");
}catch (Exception e) {
System.out.println(prmFile.getName() + "の画像でエラー。");
}
return imjpeg;
}

/**
* Pngの読み込み
* @param prmFile
* @return
*/
public BufferedImage GetBufferedImagePNG(File prmFile){
BufferedImage imPng = null;
try{
PNGImageReader imageReader = new PNGImageReader(new PNGImageReaderSpi());
imageReader.setInput(new FileImageInputStream(prmFile));
imPng = imageReader.read(0);
}catch (Exception e) {
System.out.println(e.getMessage() + prmFile.getName() + "の画像読み込みでエラー。");
}
return imPng;
}

/**
* JPEGの出力
* @param im
* @param prmImageName
*/
public void OutputJpeg(BufferedImage im,String prmImageName,String OutputPath){
try{
//出力ストリームの作成
OutputStream out = new FileOutputStream(OutputPath);// + prmImageName);
//JPEGImageEncoder を生成する
JPEGImageEncoder encoder =
JPEGCodec.createJPEGEncoder(out);
//デフォルトの JPEGEncodeParam を取得して品質(圧縮率)を設定する (しなくても良い)
JPEGEncodeParam encodeParam =
encoder.getDefaultJPEGEncodeParam(im);
//encodeParam.setQuality(0.7f, false);
//生成した JPEGImageEncoder で JPEG にエンコードする
encoder.encode(im, encodeParam);
out.close();
}catch (FileNotFoundException fne) {
System.out.println(fne.getMessage() + prmImageName + "の書き出しで見つからない。");
}catch (Exception Ee) {
System.out.println(Ee.getMessage() + prmImageName + "の書き出しでエラー。");
}
}
/**
* Pngの出力
* @param im
* @param prmImageName
*/
public void OutputPng(BufferedImage im,String prmImageName,File prmFile,String OutputPath){
try{
//出力ストリームの作成
ImageOutputStream out = 
ImageIO.createImageOutputStream(new File(OutputPath + prmImageName));
PNGImageWriter imageWriter = new PNGImageWriter(new PNGImageWriterSpi());
imageWriter.setOutput(out);
imageWriter.write(im);
out.close();
}catch (IllegalArgumentException IAe) {
System.out.println(IAe.getMessage() + prmImageName + "の書き出しでエラー。");
}catch (FileNotFoundException fne) {
System.out.println(fne.getMessage() + prmImageName + "の書き出しで見つからない");
}catch (IOException Ie) {
System.out.println(Ie.getMessage() + prmImageName + "の書き出しでエラー。");
}catch (Exception Ee) {
System.out.println(Ee.getMessage() + prmImageName + "の書き出しでエラー。");
}
}
こんな感じです。適当にコピったので、もしかしたら、モンダイありかもです。あと、パラメータは内容と名前を見て推理してください。

仕事中調べて、今度また必要なときに再度調べたり一から作成したりするのが面倒なものを
なるべくメソッド単位でメモ。

以下のはファイルの名前から拡張子を取得して、拡張子名の文字列を返すメソッド。
/**
* 拡張子の取得
* @param prmFileName
* @return 拡張子名
*/
public static String GetExtension(String prmFileName){
int point = prmFileName.lastIndexOf(".");
String ExtensionName = "";
   try{
if (point != -1) {
    ExtensionName = prmFileName.substring(point + 1);
}
   }catch (Exception e) {
System.out.println(e.getMessage() + prmFileName + "でエラー");
}
   return ExtensionName;
}
呼び出し元で、
File file = new File("filePath");
GetExtention(file.name);
としてもいいですし、
パラメータをFileにしてメソッド側でFile名かパスを取得してもいいです。お好きな方でどうぞ。

意外に使い道があったのでメモ。以上です。

全8ページ

[1] [2] [3] [4] [5] [6] [7] [8]

[ 次のページ ]


.
nas
nas
男性 / 非公開
人気度
Yahoo!ブログヘルプ - ブログ人気度について
友だち(1)
  • Bar garden
友だち一覧

スマートフォンで見る

モバイル版Yahoo!ブログにアクセス!

スマートフォン版Yahoo!ブログにアクセス!

1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30

標準グループ

登録されていません

Yahoo!からのお知らせ

よしもとブログランキング

もっと見る

[PR]お得情報

ふるさと納税サイト『さとふる』
お米、お肉などの好きなお礼品を選べる
毎日人気ランキング更新中!
ふるさと納税サイト『さとふる』
11/30まで5周年記念キャンペーン中!
Amazonギフト券1000円分当たる!

その他のキャンペーン


プライバシー -  利用規約 -  メディアステートメント -  ガイドライン -  順守事項 -  ご意見・ご要望 -  ヘルプ・お問い合わせ

Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved.

みんなの更新記事