我正在尝试在Windows上安装imagick PHP扩展.它正在开发PHP 5.2,PHP 5.3,但我遇到了PHP 5.4的问题.
Imagick版本:ImageMagick-6.7.6-3-Q16-windows-dll.模块正在运行.我可以在phpinfo()中看到想象力.
问题是,imagick无法识别文件的相对路径.例如,如果我在同一个文件夹中有简单的index.php和a.jpg,我就无法使用,$im = new imagick('a.jpg');
因为我得到了异常:
致命错误:未捕获异常'ImagickException',消息'无法打开图像`a.jpg':D:\ Web\i\index.php中没有此类文件或目录@ error/blob.c/OpenBlob/2614':3堆栈跟踪:#0 D:\ Web\i\index.php(3):Imagick - > __ construct('a.jpg')#1 {main}在第3行的D:\ Web\i\index.php中抛出
但是,当我使用绝对路径时,$im = new imagick('D:\web\i\a.jpg');
它正在工作.
我发现,Imagick使用Apache核心目录作为参考.我没有路径保存图像:
$ im-> writeImage('this-is-what-im-looking-for.jpg');
我在C:\ Program Files(x86)\ Apache24\this-is-what-im-looking-for.jpg中找到它
问题是,我所有的旧脚本都是用相对路径编写的,我想用它们来计算.
我不知道,如果问题出在想象本身,或者PHP 5.4中的某个地方.
先感谢您
我有两个同时运行的AJAX请求有问题.我有一个PHP脚本,它将数据导出到XSLX.此操作需要花费大量时间,因此我正在尝试向用户显示进度.我正在使用AJAX和数据库方法.实际上,我很确定它曾经工作但我无法弄清楚为什么,它不再适用于任何浏览器.新浏览器有什么变化吗?
$(document).ready(function() {
$("#progressbar").progressbar();
$.ajax({
type: "POST",
url: "{$BASE_URL}/export/project/ajaxExport",
data: "type={$type}&progressUid={$progressUid}" // unique ID I'm using to track progress from database
}).done(function(data) {
$("#progressbar-box").hide();
clearInterval(progressInterval);
});
progressInterval = setInterval(function() {
$.ajax({
type: "POST",
url: "{$BASE_URL}/ajax/progressShow",
data: "statusId={$progressUid}" // the same uinque ID
}).done(function(data) {
data = jQuery.parseJSON(data);
$("#progressbar").progressbar({ value: parseInt(data.progress) });
if (data.title) { $("#progressbar-title").text(data.title); }
});
}, 500);
});
Run Code Online (Sandbox Code Playgroud)
那么,为什么第二个AJAX调用等待第一个完成呢?
我试图用动画扩展 UITextView,当用户点击它下面的阅读更多按钮时。
我尝试了很多方法并提出了几乎可行的解决方案:
func readMore() {
self.tableView.beginUpdates()
cell.descTextViewHeightConstraint.constant = cell.descTextView.expectedHeight()
self.tableView.endUpdates()
}
Run Code Online (Sandbox Code Playgroud)
UI文本视图+高度
extension UITextView {
func expectedHeight() -> CGFloat {
let textView: UITextView = UITextView(frame: CGRect(x: 0, y: 0, width: self.frame.size.width, height: CGFloat.greatestFiniteMagnitude))
textView.font = self.font
textView.text = self.text
textView.sizeToFit()
return textView.frame.height
}
}
Run Code Online (Sandbox Code Playgroud)
此解决方案有效,但有一个副作用 - 当动画完成时, UITableViewCell 中的某些元素被隐藏(标题标签)。
我还尝试在动画完成时调用 tableView.reloadData(),这可行,但有时也会产生副作用。
我正在尝试进行实时电子邮件验证,但模拟器有奇怪的行为。当电子邮件无效时,它应该是红色的,当它有效时,文本的颜色应该是黑色,但有些字符保持红色。
struct EmailText: View {
@State var textFieldValue: String = ""
private func isValid(_ s: String) -> Bool {
// not real validation function, just for simplicity
return Int.random(in: 0 ... 1) == 1
}
var body: some View {
TextField("", text: $textFieldValue)
.foregroundColor(isValid(textFieldValue) ? .black : .red)
.padding()
}
}
Run Code Online (Sandbox Code Playgroud)
编辑:我已将验证函数从正则表达式更新为简单条件,以排除正则表达式作为可能的问题。
Optional
我正在尝试使用默认值扩展 Swift 的类型。在 API 请求中提供空值应该会引发异常。我已经为该String
类型完成了此操作,但无法使用该Integer
类型获得相同的结果:
extension Optional where Wrapped == String {
var unwrappedValue: String {
get {
switch self {
case .some(let value):
return value
case .none:
return ""
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
该Integer
版本抛出以下内容Error
:
协议“Integer”只能用作通用约束,因为它具有 Self 或关联的类型要求
extension Optional where Wrapped == Integer {
var unwrappedValue: Integer {
get {
switch self {
case .some(let value):
return value
case .none:
return 0
}
}
}
}
Run Code Online (Sandbox Code Playgroud) php ×2
swift ×2
ajax ×1
animation ×1
imagick ×1
ios ×1
progress-bar ×1
simultaneous ×1
swiftui ×1
uitableview ×1
windows ×1
xcode ×1