具有base64图像的v-card-media

时间:2018-05-04 03:42:05

标签: coldfusion vuejs2 captcha vuetify.js taffy

我正在ColdFusion中创建一个验证码图像,并将其作为带有Taffy的REST源返回。然后在Vuetify中显示

ColdFusion / Taffy代码

<cfscript>
  component extends="taffy.core.resource" taffy_uri="/captcha" {

  function get() hint="Sends one out" {

  var captcha   = CreateUUID().right(4) & DayOfWeekAsString(DayOfWeek(now())).left(1).lcase() & "!";

  // This is ColdFusion
  var tempFile = "ram:///#captcha#.txt";

  var myImage = ImageCreateCaptcha(100, 300, captcha, "low");

  ImageWriteBase64(myImage, tempFile, "png", true, true);

  var myfile = FileRead(tempFile);
  FileDelete(tempFile);


  return rep({'status' : 'success', 'time' : GetHttpTimeString(now()),
    'captcha_hash' : hash(captcha), 'captcha_image' : myFile
    });
}
...
</cfscript>

它返回如下内容:

{"status":"success","captcha_image":"data:image/png;base64,iVBORw0KG /d67W8EALALKJQAABBYAAAILABAYAEAILAAdr...

Vue公司

我可以通过

显示图像
<img :src="captcha_image" height="100px;">

Vuetify

如果我没有使用高度,则图像根本不会出现

如果我使用这样的高度,它会出现错误的宽高比。

<v-card-media :src="captcha_image" height="100px"></v-card-media>

有解决方法吗?或<v-card-media是错误的工具吗?

1 个答案:

答案 0 :(得分:2)

原因是v-card-media将图像用作固定高度的div的背景图像。

如果要保持纵横比。您可以使用<img />标记而不是width="100%"

<img src="data:image/jpeg;base64,/9j/4AAQ..." width="100%">

演示:https://codepen.io/jacobgoh101/pen/bMrBWx?&editors=101

<div id="app">
  <v-app id="inspire">
    <v-layout>
      <v-flex xs12 sm6 offset-sm3>
        <v-card>
          <img src="data:image/jpeg;base64,/9j/4AAQ..." width="100%">
          <v-card-title primary-title>
              ...
          </v-card-title>
          <v-card-actions>
              ...
          </v-card-actions>
        </v-card>
      </v-flex>
    </v-layout>
  </v-app>
</div>