2016年12月28日水曜日

[Android]How to make a PDF from an image

さて、今回はAndroidで画像からPDFを作成する方法についてご説明します。
I explain how to make a PDF from an image on Android this time.

環境(Environment): Android Studio 2.2.1, API 21

今回もまずはサンプルコードから。
At first, look sample code below.


private void savePDFTmp(Bitmap bmpPrint){
    File cachedir = getExternalCacheDir();
    String path = cachedir.getPath() + "/sample.pdf";
    File saveFile = new File(path);

    PdfDocument document = new PdfDocument();

    PdfDocument.PageInfo pageInfo = new PdfDocument.PageInfo.Builder(bmpPrint.getWidth(), bmpPrint.getHeight(), 1).create();

    PdfDocument.Page page = document.startPage(pageInfo);
    Canvas canvas = page.getCanvas();
    canvas.drawBitmap(bmpPrint, 0, 0, null);

    document.finishPage(page);

    try{
        FileOutputStream out = new FileOutputStream(path);
        document.writeTo(out);
        rtnValue = path;
    }catch(Exception e){
        String err = e.toString();
    }
}

AndroidでPDFを作成するにはPdfDocument(android.graphics.pdf.PdfDocument)を使用します。
まず最初にPdfDocument.PageInfoでPDFのページの大きさを定義し、PdfDocumentのstartPageメソッドの引数として設定し、PdfDocument.Pageを取得します。
その後、PdfDocument.Pageに書き込む為のCanvasを取得し、そのCanvasにBitmapを書き込みます。
最後にPdfDocumentのfinishPageメソッドを実行してPDFの書き込みを終了し、FileOutputStreamでファイルとして出力すれば完成です。
Use PdfDocument(android.graphics.pdf.PdfDocument) for making a PDF on Android.
At first, use PdfDocument.PageInfo and specify the scale of a PDF page, and set it to PdfDocument's startPage method as argument, and get PdfDocument.Page.
And get Canvas for writing PdfDocument.Page and draw Bitmap to this Canvas.
At last, declare PdfDocument's finishPage method in order to finish to write a PDF, and use FileOutputStream and write a PDF data to a file.

[関連記事(Articles)]
[iOS]How to make a PDF from an image


にほんブログ村 ライフスタイルブログ クリエイティブライフへ
にほんブログ村

クリエイティブライフ ブログランキングへ

2016年12月27日火曜日

[iOS]How to make a PDF from an image

さて、今回はiOSにて画像からPDFを作成する方法についてご説明します。
I explain how to make a PDF from an image on iOS this time.

環境(Environment):Xcode 8.2.1, Swift 3


まずコードから。

At first, look sample code below.


func makePDF(image:UIImage){
            //Make PDF Data
            var data:NSMutableData! = NSMutableData()
            UIGraphicsBeginPDFContextToData(data,CGRect.zero , nil)
            UIGraphicsBeginPDFPageWithInfo(CGRect(x: 0,y: 0,width: image.size.width,height: image.size.height),nil)
            image.draw(in: CGRect(x: 0,y: 0,width: image.size.width,height: image.size.height))
            UIGraphicsEndPDFContext()
        
            let pickerCtl = MFMailComposeViewController()
            pickerCtl.mailComposeDelegate = self
            pickerCtl.setMessageBody("", isHTML: false)
            pickerCtl.addAttachmentData(data as Data, mimeType: "application/pdf", fileName: pdfTitle2 + ".pdf")
            
            self.present(pickerCtl,animated:true,completion:nil)
            data = nil

        }

まずUIGraphicsBeginPDFContextToDataNSMutableDataに対するPDF用のグラフィックコンテキストを作成します。その後、UIGraphicsBeginPDFPageWithInfoでPDFのページの大きさを定義します。
そしてUIImageの書き込みを行います。
最後にUIGraphicsEndPDFContextを宣言してグラフィックコンテキストを閉じれば完成です。
これでNSMutableDataはPDFのデータとなっています。
このサンプルでは最後にメールに添付して送信できる様にしています。
Use UIGraphicsBeginPDFContextToData and create a PDF-based graphics context that targets the specified NSMutableData. And use UIGraphicsBeginPDFPageWithInfo and specify the scale of a PDF page.
And draw UIImage to NUMutableData.
At last, declare UIGraphicsEndPDFContext and NSMutableData turns into a PDF data.
In this sample code, a PDF Data is send as a E-mail attachment.

[関連記事(Articles)]
[Android]How to make a PDF from an image

にほんブログ村 ライフスタイルブログ クリエイティブライフへ
にほんブログ村

クリエイティブライフ ブログランキングへ

2016年12月26日月曜日

[iOS]How to print and share image

今回はiOSで画像を印刷したり、画像をTwitter、Facebook等の他のアプリと連携する方法についてご説明します。
I write how to print and share image with other applications, for example, Twitter and Facebook, on iOS this time.

iOSの場合は、iOSのApp Extensionsと連携することによって実現します。(画像はPocket Noteでの実施例です。)
In case of iOS, you can cooperate with iOS's App Extensions.(Photographs below are examples of Pocket Note)




環境(Environment):Xcode 8.、Swift 3

早速コードです。UIActivityViewControllerを使用して、App Extensionsに画像を渡します。
This is sample code. Use UIActivityController and you can give an image App Extensions.


let _buttonPrint:UIButton = UIButton()

override func viewDidLoad() {
     super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
     _buttonPrint.frame = CGRect(x: 10,y: 10,width: 40,height: 40)
        _buttonPrint.addTarget(self, action: #selector(MainViewController.TouchUpButtonPrint), for: .touchUpInside)
       self.view.addSubview(_buttonPrint)
}

func TouchUpButtonPrint(){
        // 印刷する画像を取得(Get image for printing)
        var printImage:UIImage! = GetPrintImage()

        let activityViewController = UIActivityViewController(activityItems:[printImage],applicationActivities:nil)
        activityViewController.modalPresentationStyle = UIModalPresentationStyle.popover
        activityViewController.preferredContentSize = CGSize(width: 500,height: 500)
        
        let popoverController = activityViewController.popoverPresentationController
        popoverController?.delegate = self
        popoverController?.permittedArrowDirections = UIPopoverArrowDirection.up
        popoverController?.sourceView = _buttonPrint
        popoverController?.sourceRect = _buttonPrint.bounds
        
        self.present(activityViewController, animated: true, completion: nil)
        
        printImage = nil

    }


[関連記事(Articles)]
[Android]How to print and share image


にほんブログ村 ライフスタイルブログ クリエイティブライフへ
にほんブログ村

クリエイティブライフ ブログランキングへ

2016年12月25日日曜日

[Android]How to print and share image

さて、久々のプログラミングネタです。
今回はAndroidアプリにおいて、Pocket Noteの様に画像を印刷したり、他のアプリに画像を連携したりする方法についてご説明します。
I write method of programming after a long time.
I explain how to print image and share image with other applications on Android application like Pocket Note this time.






環境(Environment):Android Studio 2.2.1 、API 21

1. 印刷(Print)
Androidでは4.4(API 19)から印刷機能がサポートされています。
Androidアプリから印刷を実行するにはPrintHelper(android.support.v4. print.PrintHelper)を使用します。
Android supports print function from Version 4.4(API 19).
Use PrintHelper(android.support.v4. print.PrintHelper) to print image from an Android application.


private void execPrint(Bitmap bmpPrint){
    
    if (PrintHelper.systemSupportsPrint()) {
           PrintHelper printHelper = new PrintHelper(this);
           printHelper.setColorMode(PrintHelper.COLOR_MODE_COLOR);
           printHelper.setScaleMode(PrintHelper.SCALE_MODE_FIT);
           printHelper.printBitmap("Image Title", bmpPrint);
    }
}

2.他アプリとの連携
Android上にインストールされているTwitter,Facebook,Google+等のアプリに画像を連携するにはIntent(android.content.Intent)を使用します。
Use Intent(android.content.Intent) to share image with other applications,for example,Twitter,Facebook and Google+ on Android.

また事前に画像をキャッシュ領域にファイルとして保存してから連携しています。
And save image as file into cache directory before using Intent.


private void execPrint(Bitmap bmpPrint,int applicationType){
    
    if (applicationType == 3 || applicationType == 4){
       Uri saveFileUri = saveTemp2(bmpPrint);
    }else{
       String saveFileName = saveTemp(bmpPrint);
    }

    switch (applicationType){ 
    case 1:
        //Twitter
        Intent intent = new Intent();
        intent.setAction(Intent.ACTION_SEND);
        intent.setPackage("com.twitter.android");
        intent.setType("image/jpg");
        File sendFile = new File(saveFileName);
        intent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(sendFile));
        startActivity(intent);
        break;
    case 2:
        //facebook
        Intent intent = new Intent();
        intent.setAction(Intent.ACTION_SEND);
        intent.setPackage("com.facebook.katana");
        intent.setType("image/jpg");
        File sendFile = new File(saveFileName);
        intent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(sendFile));
        startActivity(intent);
        break;
    case 3:
        //Google+
        Intent shareIntent = new PlusShare.Builder(this)
                .addStream(saveFileUri)
                .setType("image/jpg")
                .getIntent();

        startActivityForResult(shareIntent, 0);
        break;
    case 3:
        //Other Applications        Intent share = new Intent(Intent.ACTION_SEND);
        share.setType("image/jpg");
        share.putExtra(Intent.EXTRA_STREAM, saveFileUri);
        startActivity(Intent.createChooser(share, "Share applications"));
        break;
     }
}

//Save image as file and return file's name
private String saveTemp(Bitmap bmpPrint){
    String rtnValue = "";
    File internalCachedir = getExternalCacheDir();

    String path = internalCachedir.getPath() + "/Temp.jpg";
    File saveFile = new File(path);
    FileOutputStream out = new FileOutputStream(path);
    bmpPrint.compress(Bitmap.CompressFormat.JPEG,100,out);
    out.flush();
    out.close();
    return path;
}

//Save image as file and return file's Uri
private Uri saveTemp2(Bitmap bmpPrint){
    File internalCachedir = getExternalCacheDir();

    String path = internalCachedir.getPath() + "/Temp.jpg";
    File saveFile = new File(path);
    FileOutputStream out = new FileOutputStream(path);
    bmpPrint.compress(Bitmap.CompressFormat.JPEG,100,out);
    out.flush();
    out.close();
    
    return Uri.fromFile(saveFile);
}

[関連記事(Articles)]
[iOS]How to print and share image

にほんブログ村 ライフスタイルブログ クリエイティブライフへ
にほんブログ村

クリエイティブライフ ブログランキングへ

2016年12月22日木曜日

JimdoがHTTPSに対応しましたね

12月20日、私が利用しているWebサイト作成サービス「Jimdo(ジンドゥー)」よりHTTPSに対応したとの連絡を頂きました。
I was received message from Jimdo, a Japanese website service which is used by us, on December 20,2016, and this message said that all web sites of Jimdo corresponded HTTPS.

早速、Jimdoで作った私の事務所Studio K'sのサイトを見てみるとURLが「https://」になっていました。
こういう対応は嬉しいですね。
When I saw the website of my office "Studio K's", URL of website began with "https://".
I'm grateful Jimdo.
Studio K's


現在、世界中でセキュリティ対策としてHTTPをHTTPSに置き換える動きが活発になっています。
今後はほぼ全てのサイトでHTTPSを使うのが標準になるのでしょうね。
The movement which HTTP is replaced with HTTPS as security method is spreading all over the world recently. 
I think HTTPS will be used by all website.

にほんブログ村 ライフスタイルブログ クリエイティブライフへ
にほんブログ村

クリエイティブライフ ブログランキングへ

2016年12月19日月曜日

Appliv[アプリヴ]にPocket Note Android版のレビューを掲載して頂きました

このたび、iOSアプリ、Androidアプリ情報サービスAppliv[アプリヴ]Pocket Note Android版のレビューを掲載して頂きました。
以下のリンクになりますので、ぜひご覧下さい。
Appliv, an information service for iOS and Android applications, reviews Pocket Note for Android.
Appliv's review is published below link.

Appliv Pocket Note - 手書き・印刷に対応したメモ帳
http://android.app-liv.jp/003976950/

Pocket Note

にほんブログ村 ライフスタイルブログ クリエイティブライフへ
にほんブログ村

クリエイティブライフ ブログランキングへ

2016年12月17日土曜日

iPhone 7 Plus

さて、このたびiPhone 7 Plusを購入しました。iPhone 4S以来、5年ぶりの購入になります。
I bought iPhone 7 Plus this time. I have got iPhone first time in five years since I bought iPhone 4S.

iPhone 7からApply PayでSuicaが使用できることが話題になっていましたが早速使ってみました。
Apple Pay can be used Suica on iPhone 7, and I used it suddenly.

Suicaのチャージも簡単で便利です。
Charging Suica is easily and it is handy.


iPhone 7 Plusには望遠レンズが搭載されています。
iPhone 7 Plus is mounted on a telephoto lens.


こちらが通常のレンズ(1x)です。
This is a picture taken by a normal lens.

こちらが望遠レンズ(2x)です。
This is a picture taken by a telephoto lens.


こちらは新しい「ミュージック」のデザインです。
This is new design of "Music".


最初、シャッフルやリピートの仕方が分からなかったのですが、メニューを上にスクロールするとシャッフル、リピートが出てきました。
At first, I didn't understand how to shuffle and repeat musics, but when I scrolled music menu, I discovered shuffle button and repeat button.


iPhone 7 Plusは画面が大きい為、メモ帳アプリも使いやすいです。
It is easy to use a notebook application, because iPhone 7 Plus has big screen.


にほんブログ村 ライフスタイルブログ クリエイティブライフへ
にほんブログ村

クリエイティブライフ ブログランキングへ

2016年12月15日木曜日

角丸のアイコンを作成するサイト

さて、iOSの場合はシステムが自動的にアイコンの角を丸くしてくれますが、Androidの場合は自分で角を丸くする必要があります。
そんな時、以下のサイトを利用すると、簡単に角丸のアイコンを作成することができます。
In the case of iOS, system rounds corners of icon, but in the case of Android, we must round corners of icon ourselves.
We can round corners of icon easily when we use below website.

CMAN:無料画像加工サービス
https://image-convert.cman.jp

こんな感じで綺麗に角丸のアイコンを作ってくれます。
If you use this website, you can get a beautiful icon which corners are rounded like this.

オススメですよ。
I recommend you this website.


にほんブログ村 ライフスタイルブログ クリエイティブライフへ
にほんブログ村

クリエイティブライフ ブログランキングへ

2016年12月13日火曜日

Fun Sake Brewer(清龍酒造)

今週の日曜日に、テニス仲間の皆様と一緒に埼玉県蓮田市にある清龍酒造の蔵元見学に行ってきました。
I went to observe "Seiryu Shuzou", a sake(Japanese rice wine) brewer in Hasuda City,Saitama Prefecture,Japan, with my tennis friends this Sunday.
清瀧酒造


この蔵元では土日に酒蔵巡りを開催しています。
まず30分程、酒蔵見学を行った後、この蔵元のお酒の試飲会が行われます。
試飲会と銘打っていますが、まるで宴会でした。
"Seiryu Shuzou" has a sake brewer tour on the weekend.
A sake brewer tour is composed of observing a facility and sake tasting.

こちらが、清龍酒造の純米酒、純米原酒、純米大吟醸の利き酒セットです。
どれもスッキリした味わいです。また、純米大吟醸はとてもフルーティーです。
These are Jyunmai-shu,Jyunmai-genshu and Jyunmai Daiginjyo-shu made by "Seiryu Shuzou".
All sakes are clear taste, and Jyunmai Daiginjyo-shu has a fruity fragrance.

その他にも熱燗、リキュール、濁り酒等が出て来ました。
And Atsukan(hot sake),liqueur,nigori sake were served.


こちらが試飲会のお食事です。とても豪華です。
These are deluxe foods of this sake tasting.

釜飯はとても美味しかったです。
Kamameshi was very delicious.

途中でお魚の解体ショーもありました。
本日のお魚は真鯛でした。
There is dissecting a fish show in the middle of sake tasting.
Today's fish is red seabream.

これで参加費がトータル3,000円なのですから、すごくお得ですよね。
The cost of this sake brewer tour is 3000 yen, and it is good value price.


試飲会中には若手ミュージシャンの越山元貴さんの演奏がありました。
最後は参加者全員で清瀧酒造のテーマ曲である「明日への乾杯」を合唱しました。
とても楽しかったですよ。
Genki Koshiyama, a young musician, played music.
And all participants sang "Asu-eno-Kanpai", a theme music for "Seriyu Shuzou", together.  
It was very fun.

ちなみに試飲会後に越山さんのCD「Sing」を購入しました。
I bought "Sing", a CD of Koshiyama after sake brewer tour.

こちらは清龍酒造の社長さんと従業員さん一同。ありがとうございました。
社長さんの軽快な解説はとても楽しかったです。
They are the president and employees of "Seiryu Shuzou". Thank you very much for their hospitality!
President's explanation was very enjoyable.


この蔵元見学に参加すると、この様な会員証をもらいます。
This is a membership card of this sake brewer tour.



こちらは清龍酒造の直売所。清龍酒造のお酒は酒屋での販売はしておらず、この直売所と、東京都内にある8店舗ある居酒屋でのみ販売しているそうです。
This is a direct-sales depot of "Seiryu Shuzou".
Sakes of "Seiryu Shuzou" are only sold by this direct-sales depot and 8 Tokyo's pubs managed by "Seiryu Shuzou".

敷地内にはこんな看板も。
社長さんによると以前、群馬から馬で来た方がいたそうです。


<所在地>
清龍酒造
   埼玉県蓮田市閏戸659-3

Seiryu Shuzou
    659-3 Urudo,Hasuda City,Saitama Prefecture,Japan.

にほんブログ村 ライフスタイルブログ クリエイティブライフへ
にほんブログ村

クリエイティブライフ ブログランキングへ