Home Backend Development PHP Tutorial Forced download of QR code images

Forced download of QR code images

Mar 24, 2018 pm 03:52 PM
download picture

This time I will bring you forced downloading of QR code images, and what are the precautions to implement forced downloading of QR code images. The following is a practical case, let’s take a look.

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

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130

131

132

133

134

135

136

137

138

139

140

141

142

143

144

145

146

147

148

149

150

151

152

153

154

155

156

157

158

/* 下载二维码 */

 public function 测试(){

  // 接收传递的参数

  $data['keys'] = [ 'b01id'=>trim(I('get.b01id')),

       'b02id'=>trim(I('get.b02id')),

       'b03id'=>trim(I('get.b03id')),

       'brid'=>trim(I('get.brid')),

       'unicon'=>trim(I('get.unicon'))];

  if(empty($data['keys']['b01id'])) $this->error('商户不存在',U('Seller/index'),3);

  $res = D('Sellerbrcode')->download($data); //方法在下面

  if(!is_array($res)) $this->error($res,U('Seller/index'),3);

  if(!empty($res['error'])) $this->error($res['error'],U('Seller/seebrcode?'.$res['url']),3);

  // 制作扫码牌

  $bgimg = imagecreatefromstring(file_get_contents($res['bgimg'])); // 拿到背景图做画布

  import('Component/phpqrcode',APP_PATH,'.php');  // 引入二维码生成类

  // 如果有扫码123二维码,则生成扫码123二维码

  if('' != $res['codea']){

   /* 参数说明:

    * 参数1:二维码需要保持的值

    * 参数2:false代表直接输出,其他则是生成的文件名

    * 参数3:纠错级别:L、M、Q、H

    * 参数4:点的大小,数值越大图片越大

    * */

   \QRcode::png($res['codea'], $res['codeimg'], 'H', 18);

   /* 使用图片缩放方法

   bool imagecopyresized($dst_im,$src_im,$dst_x,$dst_y,$src_x,$src_y,$dst_w,$dst_h,$src_w,$src_h)

     dst_im 目标图像链接的资源。

     src_im 源图像链接的资源。

     dst_x X坐标的目的地。

     dst_y y坐标目的地。

     src_x X坐标的源点。

     src_y y坐标源点。

     dst_w 目的地宽度。

     dst_h 目标高度。

     src_w 源宽度。

     src_h 源高度。

    * */

   $codeimg = imagecreatefromstring(file_get_contents($res['codeimg'])); // 拿到二维码图片

   $bg_info getimagesize($res['codeimg']);        // 得到原二维码图片的大小

   imagecopyresized($bgimg,$codeimg,1520,550,0,70,700,666,$bg_info[0],$bg_info[1]-36);

  }

  // 如果存在银联云闪付二维码,则生成银联云闪付二维码图片

  if('' != $res['codeb']){

   \QRcode::png($res['codeb'], $res['paycodeimg'], 'H', 18);

   $codeimg = imagecreatefromstring(file_get_contents($res['paycodeimg']));// 拿到二维码图片

   $bg_info getimagesize($res['paycodeimg']);       // 得到原二维码图片的大小

   imagecopyresized($bgimg,$codeimg,236,536,0,80,750,670,$bg_info[0],$bg_info[1]-80);

  }

  // 如果存在商户推广二维码,则生成商户推广二维码图片

  if('' != $res['codec']){

   \QRcode::png($res['codec'], $res['bridimg'], 'H', 18);

   $codeimg = imagecreatefromstring(file_get_contents($res['bridimg'])); // 拿到二维码图片

   $bg_info getimagesize($res['bridimg']);        // 得到原二维码图片的大小

   imagecopyresized($bgimg,$codeimg,1375,1288,0,0,230,230,$bg_info[0],$bg_info[1]);

  }

  // 如果存在商户名称

  if('' != $res['bName']){

   // 为了让文字居中,需要计算左偏移量

   preg_match_all("/[0-9]{1}/",$res['bName'],$len1);     // 得到字符串中的字数量

   preg_match_all("/[a-zA-Z]{1}/",$res['bName'],$len2);    // 得到字符串中的字母数量

   preg_match_all("/([\x{4e00}-\x{9fa5}]){1}/u",$res['bName'],$len3); // 得到字符串中的中文数量

   $left = 610 - (count($len1[0]) * 16) - (count($len2[0]) * 15) - (count($len3[0]) * 28);

   $res['filename'] .= '_' $res['bName'];       // 追加二维码名称

   $black = imagecolorallocate($bgimg, 0x20, 0x57, 0xa0);    // 字体颜色

   imagefttext($bgimg, 42, 0, $left, 480, $black,'./Public/font/msyh.ttf',$res['bName']);

  }

  // 如果存在二维码编号,则写入二维码编号

  if('' != $res['brid']){

   $black = imagecolorallocate($bgimg, 0x3e, 0x75, 0xc7);    //字体颜色

   imagefttext($bgimg, 30, 0, 1720,1190, $black,'./Public/font/msyh.ttf',$res['brid']);

  }

  // 添加银联云闪付logo

  $codeimg = imagecreatefromstring(file_get_contents($res['union']));  // 拿到二维码图片

  $bg_info getimagesize($res['union']);         // 得到原logo图片的大小

  imagecopyresized($bgimg,$codeimg,550,760,0,0,120,120*$bg_info[1]/$bg_info[0],$bg_info[0],$bg_info[1]);

  // 添加添加扫码123logo

  $codeimg = imagecreatefromstring(file_get_contents($res['logo']));  // 拿到二维码图片

  $bg_info getimagesize($res['logo']);         // 得到原logo图片的大小

  imagecopyresized($bgimg,$codeimg,1805,770,0,0,120,120*$bg_info[1]/$bg_info[0],$bg_info[0],$bg_info[1]);

  $res['filename'] .= '_' date('Y-m-d',time()) . '.png';    // 追加二维码名称

  header('Pragma: public'); // required

  header('Expires: 0');  // no cache

  header('Cache-Control: must-revalidate, post-check=0, pre-check=0');

  header('Cache-Control: private',false);

  header('Content-Type: application/force-download');

  header('Content-Disposition: attachment; filename="'.$res['filename'].'"');

  header('Content-Transfer-Encoding: binary');

  header('Connection: close');

  imagepng($bgimg);

 }

/* 生成图片前 拼接数据 */

public function download($data){

$tool = D('Tool');

// 得到公共类

$mysql = M();

$admin = I('session.admin');

/* 拼接url,方便以下错误时,跳转使用 */

$show['url'] = 'b01id='.$data['keys']['b01id'];

// 如果传递了用户id,那么判断该用户是否属于该商户

if($data['keys']['b03id'])

$show['url'].= '&b03id='.$data['keys']['b03id'];

// 如果传递了二维码id

if($data['keys']['b02id'])

$show['url'].= '&b02id='.$data['keys']['b02id'];

// 如果传递了银联云闪付

if($data['keys']['unicon']) $show['url'].= '&unicon='.$data['keys']['unicon'];

// 如果传递了推广二维码

if($data['keys']['brid'])

$show['url'].= '&brid='.$data['keys']['brid'];

// 调用上部方法得到数据

$data $this->seebrcode($data,$tool,$mysql,$admin,false);

if(!is_array($data)){ return ['error'=>$data,'url'=>$show['url']]; }

/* 得到要展示的数据

*/

$show['bgimg']

'./Public/img/qrcode/qrcode.png';

// 背景图片地址

$show['logo']

'./Public/img/qrcode/logo.png';

// 扫码123的logo地址

$show['union'

'./Public/img/qrcode/unionPay.png';

// 银联logo地址

$show['codeimg']

'./Public/img/qrcode/code.png';

// 普通二维码生成的保存地址

$show['paycodeimg'] = './Public/img/qrcode/paycode.png';

// 银联二维码生成的保存地址

$show['bridimg']

'./Public/img/qrcode/brid.png';

// 商户推广二维码图片的保存地址

$show['filename']

'扫码123收款二维码';

// 二维码名称

// 扫码123二维码内容

$show['codea']

= (!$data['keys']['b02id']) ? '' : isset($data['qrcode'][$data['keys']['b02id']]) ? $data['url1'].$data['qrcode'][$data['keys']['b02id']]['brCode'] : '';

// 扫码123二维码编号

$show['brid']

= (!$data['keys']['b02id']) ? '' : isset($data['qrcode'][$data['keys']['b02id']]) ? 'NO.'.$data['keys']['b02id'] : '';

// 银联二维码

$show['codeb']

= (!$data['keys']['unicon']) ? '' : isset($data['qrcode'][$data['keys']['unicon']]) ? $data['qrcode'][$data['keys']['unicon']]['brCode'] : '';

// 商户推广二维码

$show['codec']

= (!$data['keys']['brid'])

 '' : isset($data['download'][$data['keys']['brid']]) ? $data['url2'].$data['download'][$data['keys']['brid']]['brCode'] : '';

// 商户名称

$show['bName']

empty($data['seller']['bShortName']) ? (empty($data['seller']['bName']) ? (empty($data['seller']['bCode']) ? $data['seller']['b01id'] : $data['seller']['bCode']) : $data['seller']['bName'] ) : $data['seller']['bShortName'];

/* 如果存在旧图片,则删除旧图片 */

if(is_file($res['codeimg']))

unlink($res['codeimg']);

// 删除旧的扫码123二维码图片

if(is_file($res['paycodeimg'])) unlink($res['paycodeimg']); // 删除旧的银联云闪付二维码图片

if(is_file($res['paycodeimg'])) unlink($res['paycodeimg']); // 删除旧的商户推广二维码图片

return $show;

}

Copy after login

I believe you have mastered the method after reading the case in this article. For more exciting information, please pay attention to other related articles on the php Chinese website!

Recommended reading:

php custom two-dimensional array sorting function array

Detailed explanation of PHP server-side API and interface development

The above is the detailed content of Forced download of QR code images. For more information, please follow other related articles on the PHP Chinese website!

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

Hot Topics

Java Tutorial
1655
14
PHP Tutorial
1253
29
C# Tutorial
1227
24
How to download episodes of Hongguo short drama How to download episodes of Hongguo short drama Mar 11, 2024 pm 09:16 PM

Hongguo Short Play is not only a platform for watching short plays, but also a treasure trove of rich content, including novels and other exciting content. This is undoubtedly a huge surprise for many users who love reading. However, many users still don’t know how to download and watch these novels in Hongguo Short Play. In the following, the editor of this website will provide you with detailed downloading steps. I hope it can help everyone in need. Partners. How to download and watch the Hongguo short play? The answer: [Hongguo short play] - [Audio book] - [Article] - [Download]. Specific steps: 1. First open the Hongguo Short Drama software, enter the homepage and click the [Listen to Books] button at the top of the page; 2. Then on the novel page we can see a lot of article content, here

What should I do if I download other people's wallpapers after logging into another account on wallpaperengine? What should I do if I download other people's wallpapers after logging into another account on wallpaperengine? Mar 19, 2024 pm 02:00 PM

When you log in to someone else's steam account on your computer, and that other person's account happens to have wallpaper software, steam will automatically download the wallpapers subscribed to the other person's account after switching back to your own account. Users can solve this problem by turning off steam cloud synchronization. What to do if wallpaperengine downloads other people's wallpapers after logging into another account 1. Log in to your own steam account, find cloud synchronization in settings, and turn off steam cloud synchronization. 2. Log in to someone else's Steam account you logged in before, open the Wallpaper Creative Workshop, find the subscription content, and then cancel all subscriptions. (In case you cannot find the wallpaper in the future, you can collect it first and then cancel the subscription) 3. Switch back to your own steam

How to download links starting with 115://? Download method introduction How to download links starting with 115://? Download method introduction Mar 14, 2024 am 11:58 AM

Recently, many users have been asking the editor, how to download links starting with 115://? If you want to download links starting with 115://, you need to use the 115 browser. After you download the 115 browser, let's take a look at the download tutorial compiled by the editor below. Introduction to how to download links starting with 115:// 1. Log in to 115.com, download and install the 115 browser. 2. Enter: chrome://extensions/ in the 115 browser address bar, enter the extension center, search for Tampermonkey, and install the corresponding plug-in. 3. Enter in the address bar of 115 browser: Grease Monkey Script: https://greasyfork.org/en/

How to solve the problem of automatically saving pictures when publishing on Xiaohongshu? Where is the automatically saved image when posting? How to solve the problem of automatically saving pictures when publishing on Xiaohongshu? Where is the automatically saved image when posting? Mar 22, 2024 am 08:06 AM

With the continuous development of social media, Xiaohongshu has become a platform for more and more young people to share their lives and discover beautiful things. Many users are troubled by auto-save issues when posting images. So, how to solve this problem? 1. How to solve the problem of automatically saving pictures when publishing on Xiaohongshu? 1. Clear the cache First, we can try to clear the cache data of Xiaohongshu. The steps are as follows: (1) Open Xiaohongshu and click the "My" button in the lower right corner; (2) On the personal center page, find "Settings" and click it; (3) Scroll down and find the "Clear Cache" option. Click OK. After clearing the cache, re-enter Xiaohongshu and try to post pictures to see if the automatic saving problem is solved. 2. Update the Xiaohongshu version to ensure that your Xiaohongshu

How to post pictures in TikTok comments? Where is the entrance to the pictures in the comment area? How to post pictures in TikTok comments? Where is the entrance to the pictures in the comment area? Mar 21, 2024 pm 09:12 PM

With the popularity of Douyin short videos, user interactions in the comment area have become more colorful. Some users wish to share images in comments to better express their opinions or emotions. So, how to post pictures in TikTok comments? This article will answer this question in detail and provide you with some related tips and precautions. 1. How to post pictures in Douyin comments? 1. Open Douyin: First, you need to open Douyin APP and log in to your account. 2. Find the comment area: When browsing or posting a short video, find the place where you want to comment and click the "Comment" button. 3. Enter your comment content: Enter your comment content in the comment area. 4. Choose to send a picture: In the interface for entering comment content, you will see a "picture" button or a "+" button, click

Introduction to how to download and install the superpeople game Introduction to how to download and install the superpeople game Mar 30, 2024 pm 04:01 PM

The superpeople game can be downloaded through the steam client. The size of this game is about 28G. It usually takes one and a half hours to download and install. Here is a specific download and installation tutorial for you! New method to apply for global closed testing 1) Search for "SUPERPEOPLE" in the Steam store (steam client download) 2) Click "Request access to SUPERPEOPLE closed testing" at the bottom of the "SUPERPEOPLE" store page 3) After clicking the request access button, The "SUPERPEOPLECBT" game can be confirmed in the Steam library 4) Click the install button in "SUPERPEOPLECBT" and download

How to download Quark network disk to local? How to save files downloaded from Quark Network Disk back to the local computer How to download Quark network disk to local? How to save files downloaded from Quark Network Disk back to the local computer Mar 13, 2024 pm 08:31 PM

Many users need to download files when using Quark Network Disk, but we want to save them locally, so how to set this up? Let this site introduce to users in detail how to save files downloaded from Quark Network Disk back to the local computer. How to save files downloaded from Quark network disk back to your local computer 1. Open Quark, log in to your account, and click the list icon. 2. After clicking the icon, select the network disk. 3. After entering Quark Network Disk, click My Files. 4. After entering My Files, select the file you want to download and click the three-dot icon. 5. Check the file you want to download and click Download.

How to download foobar2000? -How to use foobar2000 How to download foobar2000? -How to use foobar2000 Mar 18, 2024 am 10:58 AM

foobar2000 is a software that can listen to music resources at any time. It brings you all kinds of music with lossless sound quality. The enhanced version of the music player allows you to get a more comprehensive and comfortable music experience. Its design concept is to play the advanced audio on the computer The device is transplanted to mobile phones to provide a more convenient and efficient music playback experience. The interface design is simple, clear and easy to use. It adopts a minimalist design style without too many decorations and cumbersome operations to get started quickly. It also supports a variety of skins and Theme, personalize settings according to your own preferences, and create an exclusive music player that supports the playback of multiple audio formats. It also supports the audio gain function to adjust the volume according to your own hearing conditions to avoid hearing damage caused by excessive volume. Next, let me help you

See all articles