草庐IT

php - 在不保存图像的情况下旋转 Base64 图像字符串

coder 2024-04-27 原文

我收到来自 Fedex Shipping API 的响应,其中包含 PNG base64 图像,但图像是垂直显示的。我想将此图像旋转 90 度而不将其保存到磁盘,并在浏览器中显示它以供进一步打印。

我尝试先解码字符串然后使用旋转它

$rotate_image = imagerotate($image, 90, 0);
echo "<img src=\"data:image/PNG;base64,".$image."\" alt=\"Label\" />";

但是我运气不好!!

示例图像字符串

$image = "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";

最佳答案

由于 css3 transform 属性,您还可以在浏览器中进行旋转:

#yourimage {
   transform: rotate(90deg);
   -ms-transform: rotate(90deg);
   -moz-transform: rotate(90deg);
   -webkit-transform: rotate(90deg);
}

查看对此属性的支持 here , 基本上所有浏览器和 IE9 以上版本。

关于php - 在不保存图像的情况下旋转 Base64 图像字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12905780/

有关php - 在不保存图像的情况下旋转 Base64 图像字符串的更多相关文章

  1. ruby - 如何从 ruby​​ 中的字符串运行任意对象方法? - 2

    总的来说,我对ruby​​还比较陌生,我正在为我正在创建的对象编写一些rspec测试用例。许多测试用例都非常基础,我只是想确保正确填充和返回值。我想知道是否有办法使用循环结构来执行此操作。不必为我要测试的每个方法都设置一个assertEquals。例如:describeitem,"TestingtheItem"doit"willhaveanullvaluetostart"doitem=Item.new#HereIcoulddotheitem.name.shouldbe_nil#thenIcoulddoitem.category.shouldbe_nilendend但我想要一些方法来使用

  2. Ruby 解析字符串 - 2

    我有一个字符串input="maybe(thisis|thatwas)some((nice|ugly)(day|night)|(strange(weather|time)))"Ruby中解析该字符串的最佳方法是什么?我的意思是脚本应该能够像这样构建句子:maybethisissomeuglynightmaybethatwassomenicenightmaybethiswassomestrangetime等等,你明白了......我应该一个字符一个字符地读取字符串并构建一个带有堆栈的状态机来存储括号值以供以后计算,还是有更好的方法?也许为此目的准备了一个开箱即用的库?

  3. ruby-on-rails - 在 Rails 中将文件大小字符串转换为等效千字节 - 2

    我的目标是转换表单输入,例如“100兆字节”或“1GB”,并将其转换为我可以存储在数据库中的文件大小(以千字节为单位)。目前,我有这个:defquota_convert@regex=/([0-9]+)(.*)s/@sizes=%w{kilobytemegabytegigabyte}m=self.quota.match(@regex)if@sizes.include?m[2]eval("self.quota=#{m[1]}.#{m[2]}")endend这有效,但前提是输入是倍数(“gigabytes”,而不是“gigabyte”)并且由于使用了eval看起来疯狂不安全。所以,功能正常,

  4. ruby-on-rails - unicode 字符串的长度 - 2

    在我的Rails(2.3,Ruby1.8.7)应用程序中,我需要将字符串截断到一定长度。该字符串是unicode,在控制台中运行测试时,例如'א'.length,我意识到返回了双倍长度。我想要一个与编码无关的长度,以便对unicode字符串或latin1编码字符串进行相同的截断。我已经了解了Ruby的大部分unicode资料,但仍然有些一头雾水。应该如何解决这个问题? 最佳答案 Rails有一个返回多字节字符的mb_chars方法。试试unicode_string.mb_chars.slice(0,50)

  5. ruby - 将差异补丁应用于字符串/文件 - 2

    对于具有离线功能的智能手机应用程序,我正在为Xml文件创建单向文本同步。我希望我的服务器将增量/差异(例如GNU差异补丁)发送到目标设备。这是计划:Time=0Server:hasversion_1ofXmlfile(~800kiB)Client:hasversion_1ofXmlfile(~800kiB)Time=1Server:hasversion_1andversion_2ofXmlfile(each~800kiB)computesdeltaoftheseversions(=patch)(~10kiB)sendspatchtoClient(~10kiBtransferred)Cl

  6. ruby-on-rails - Rails 常用字符串(用于通知和错误信息等) - 2

    大约一年前,我决定确保每个包含非唯一文本的Flash通知都将从模块中的方法中获取文本。我这样做的最初原因是为了避免一遍又一遍地输入相同的字符串。如果我想更改措辞,我可以在一个地方轻松完成,而且一遍又一遍地重复同一件事而出现拼写错误的可能性也会降低。我最终得到的是这样的:moduleMessagesdefformat_error_messages(errors)errors.map{|attribute,message|"Error:#{attribute.to_s.titleize}#{message}."}enddeferror_message_could_not_find(obje

  7. ruby - 在 64 位 Snow Leopard 上使用 rvm、postgres 9.0、ruby 1.9.2-p136 安装 pg gem 时出现问题 - 2

    我想为Heroku构建一个Rails3应用程序。他们使用Postgres作为他们的数据库,所以我通过MacPorts安装了postgres9.0。现在我需要一个postgresgem并且共识是出于性能原因你想要pggem。但是我对我得到的错误感到非常困惑当我尝试在rvm下通过geminstall安装pg时。我已经非常明确地指定了所有postgres目录的位置可以找到但仍然无法完成安装:$envARCHFLAGS='-archx86_64'geminstallpg--\--with-pg-config=/opt/local/var/db/postgresql90/defaultdb/po

  8. ruby - 如何以所有可能的方式将字符串拆分为长度最多为 3 的连续子字符串? - 2

    我试图获取一个长度在1到10之间的字符串,并输出将字符串分解为大小为1、2或3的连续子字符串的所有可能方式。例如:输入:123456将整数分割成单个字符,然后继续查找组合。该代码将返回以下所有数组。[1,2,3,4,5,6][12,3,4,5,6][1,23,4,5,6][1,2,34,5,6][1,2,3,45,6][1,2,3,4,56][12,34,5,6][12,3,45,6][12,3,4,56][1,23,45,6][1,2,34,56][1,23,4,56][12,34,56][123,4,5,6][1,234,5,6][1,2,345,6][1,2,3,456][123

  9. ruby - 什么是填充的 Base64 编码字符串以及如何在 ruby​​ 中生成它们? - 2

    我正在使用的第三方API的文档状态:"[O]urAPIonlyacceptspaddedBase64encodedstrings."什么是“填充的Base64编码字符串”以及如何在Ruby中生成它们。下面的代码是我第一次尝试创建转换为Base64的JSON格式数据。xa=Base64.encode64(a.to_json) 最佳答案 他们说的padding其实就是Base64本身的一部分。它是末尾的“=”和“==”。Base64将3个字节的数据包编码为4个编码字符。所以如果你的输入数据有长度n和n%3=1=>"=="末尾用于填充n%

  10. ruby - 如何使用文字标量样式在 YAML 中转储字符串? - 2

    我有一大串格式化数据(例如JSON),我想使用Psychinruby​​同时保留格式转储到YAML。基本上,我希望JSON使用literalstyle出现在YAML中:---json:|{"page":1,"results":["item","another"],"total_pages":0}但是,当我使用YAML.dump时,它不使用文字样式。我得到这样的东西:---json:!"{\n\"page\":1,\n\"results\":[\n\"item\",\"another\"\n],\n\"total_pages\":0\n}\n"我如何告诉Psych以想要的样式转储标量?解

随机推荐